본문 바로가기

알고리즘/카카오 HARD

(3)
불량 사용자 (Level 3) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 user_id와 banned_id의 배열 크기가 작아서 O(n^2)으로 풀어야겠다고 생각했다. user와 banned를 비교한 후에 user가 banned와 길이가 같고 '*'을 제외한 나머지 문자들이 같으면 딕셔너리 dic에 user를 집어넣었다. 이렇게 함으로써 banned가 될 수 있는 user를 모았다. 이때 딕셔너리의 key는 인덱스로 하였는데, 그 이유는 처음부터 주어진 ..
자물쇠와 열쇠 (Level 3) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 가장 먼저 든 생각은 "자물쇠를 확장하자"였다. 가로와 세로의 길이가 (N + 2*M - 2)인 확장된 자물쇠를 만들어야 한다. 확장된 자물쇠의 중앙에 원래 자물쇠가 있다고 가정했을 때, 자물쇠의 홈의 좌표를 lock_zero에, 자물쇠 돌기의 좌표를 lock_one에 저장하였다. 열쇠는 90도 회전이 가능하므로, 열쇠를 90도로 회전하는 함수 rotate를 만들어주었다. 그리고 열..
추석 트래픽 (Level 3) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17676 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 응답 완료 시간(end)에 처리시간(th)을 이용하여 시작시간(start)을 구하였다. 시간은 '시:분:초'로 구성되어있어서 정수형으로 바꿔주었고 특히 '초'는 소수점 셋째 자리까지 있으므로 소수점을 떼기 위해 1000을 곱하였다. 그리고 log 배열에 [start, end]를 추가하였다. 처리량은 log 배열을 돌면서 계산하였다. log의 원소를 x라고 할 때, x의 시작 시간과 x의..