안녕하세요! 오늘은 프로그래머스 2레벨 오픈채팅방 문제를 풀어볼건데요!
지난주 주말에 1레벨 문제를 다 풀어버려서 1레벨테스트를 한 결과 쉽게 통과했습니다!
2레벨도 꾸준히 다 풀어보고 합격 이미지 올려드릴게요!
SWEA A형도 있는데 바로 2레벨부터 갈까 후회(매일 1문제이상 1레벨부터 풀기로 해서 시간이 오래걸려요)중이긴 합니다 ㅠ
ㅎㅎ 오늘은 자랑은 여기까지하고! 바로 문제 풀이 들어가겠습니다!
오픈 채팅방 문제는 제 생각에는 해쉬(딕셔너리) 문제라고 생각했습니다!
아이디와 닉네임 쌍으로 이루어져있다고 생각하면 아이디와 닉네임을 key와 value로 쓰고 싶다는 생각이 파바바밧 들더라구요!
Swift의 딕셔너리는 key와 value로 이루어져 있고 키로 대괄호를 통해 접근이 가능해서 매우 사용하기 편합니다!
components 메소드를 통해서 명령어와 id그리고 닉네임으로 분류 후,
commands.append(record[i].components(separatedBy: " "))
딕셔너리를 이용해서 초기화 해주면 됩니다!
dictionary.updateValue(commands[i][2], forKey: commands[i][1])
이후, 조건문(if문이나 switch문 상관없을거같아요!)을 이용해서 명령어에 따라 결과를 정리 후 return해주시면 됩니다!
import Foundation
func solution(_ record:[String]) -> [String] {
var commands:[[String]] = [[String]]()
var dictionary : [String : String] = [:]
var answer:[String] = [String]()
for i in 0..<record.count {
commands.append(record[i].components(separatedBy: " "))
if commands[i].count == 3 {
dictionary.updateValue(commands[i][2], forKey: commands[i][1])
}
}
print(commands[0][0])
for i in 0..<commands.count {
switch commands[i][0] {
case "Enter":
answer.append(dictionary[commands[i][1]]!+"님이 들어왔습니다.")
case "Leave":
answer.append(dictionary[commands[i][1]]!+"님이 나갔습니다.")
default:
break
}
}
return answer
}
오늘은 여기까지이고 긴 글 봐주셔서 감사합니다!
좋은하루 되세요!☺️
'Algorithm Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습 2017 카카오코드 본선 단체사진 찍기 with C++(brute force) (0) | 2021.12.14 |
---|---|
[프로그래머스] 코딩테스트 연습 2017 카카오코드 예선 카카오프렌즈 컬러링북 with C++ (0) | 2021.12.14 |
[프로그래머스] 연습문제 N개의 최소공배수 with Swift (0) | 2021.12.08 |
[프로그래머스] 이상한 문자 만들기, 자연수 내림차순으로 배치하기, 정수 제곱근 판별 with Swift (0) | 2021.12.07 |
[프로그래머스] 서울에서 김서방 찾기, 소수 찾기, 시저 암호 (0) | 2021.12.07 |