Where who wants to meet someone

백준 Swift [25192] 인사성 밝은 곰곰이 본문

백준 알고리즘 문제 기록/심화 2

백준 Swift [25192] 인사성 밝은 곰곰이

Lust3r 2023. 9. 11. 18:12
728x90

난이도

실버 IV

 

문제

https://www.acmicpc.net/problem/25192

 

25192번: 인사성 밝은 곰곰이

첫번째 새로운 사람이 들어온 뒤  pjshwa, chansol, chogahui05은 모두 곰곰티콘으로 인사했다. 두번째 새로운 사람이 들어온 뒤  pjshwa와 chansol은 다시 곰곰티콘으로 인사했다.

www.acmicpc.net

 

내 답안

var userName = Set<String>()
var gomgomCount = 0

for _ in 1...Int(readLine()!)! {
    let log = readLine()!

    if log == "ENTER" {
        gomgomCount += userName.count

        userName.removeAll()
    } else {
        userName.insert(log)
    }
}

gomgomCount += userName.count

print(gomgomCount)
  • "ENTER"를 기준으로 작업을 하면 좋겠다는 생각이 들었고 아래와 같은 작업을 했다.
  • 1. 곰곰티콘을 사용한 유저의 이름을 저장할 String 타입의 빈 Set 생성
    • 예시에는 각 사람마다 ENTER 이후 한 번씩만 메세지를 보냈지만 두 번씩 보낸 상황을 가정한다면 맨 첫 번째 메세지를 곰곰티콘으로 보낸 사실이 중요하므로 중복을 제거하기 위해 Set을 사용
  • 2. 사용된 횟수를 저장하기 위해 gomgomCount 변수 생성
  • 3. for문을 통해 채팅방 기록 수만큼 log를 입력 받음
  • 4-1. 입력받은 log가 "ENTER"라면 그동안의 userName에 저장된 사람의 수만큼을 gomgomCount에 추가하고 초기화
  • 4-2. "ENTER"가 아니라면 userName에 log를 추가
  • 5. 3~4 과정에서 "ENTER" 시에만 gomgomCount에 userName이 반영되었기 때문에 gomgomCount에 userName 반영
  • 6. gomgomCount 출력