본문 바로가기

전체 글39

[Programmers] 2019 카카오 인턴십 5번 - 징검다리 건너기 [문제 설명] 징검다리가 있다. 각 디딤돌은 밟을 수 있는 숫자가 적혀 있다. 디딤돌의 숫자가 0이 되면 그 다음 가까운 디딤돌로 건널 수 있다. 문제에서 한 번에 건널 수 있는 최대 디딤돌의 수 (k) 가 주어진다. 주어진 디딤돌 상태에서 최대 몇 명까지 징검다리를 건널 수 있는지를 구하는 문제. [조건] 1 2021. 9. 5.
[Programmers] 2019 카카오 인턴십 4번 - 호텔 방 배정 [문제 설명] 고객들이 배정 요청한 방 번호가 배열로 주어진다. 원하는 방이 비어있다면 즉시 배정한다. 비어 있지 않다면, 요청 번호보다 큰 비어 있는 방 중 가장 번호가 작은 방을 배정한다. [조건] 1 2021. 9. 5.
[Programmers] 2019 카카오 인턴십 3번 - 불량 사용자 [문제 설명] 유저 id / 악성 유저 id 가 주어진다. 단 악성 유저에는 * 문자가 섞여 있다. (* : 모든 숫자, 문자 대체 가능) [조건] 1 2021. 9. 3.
[Programmers] 2020 카카오 인턴십 1번 - 키패드 누르기 [문제 설명] 전화 키패드가 주어진다. 1 2 3 4 5 6 7 8 9 * 0 # 순서대로 누를 번호가 주어질 때, 각 번호를 누르는 손의 순서를 출력 (왼손 : L / 오른손 : R) [조건] 1 왼손 : {1, 4, 7} / 오른손 : {3, 6, 9} 담당 영역이 없는 번호는 가까운 손으로 클릭 [풀이] 특별한 알고리즘이 필요한 문제는 아니다. 이런 유형의 문제일수록 기발한 풀이법이 많아 배울 점이 많다. 나의 경우에는 키패드에서 키패드까지의 거리를 미리 구하였다. 거리를 용이하기 구하기 위해 2가지 방법을 적용하였다. 1) 각 키패드 값 -1 -> 키패드 간의 수직 거리를 계산할 때 3의 몫을 활용하기 위함 (ex. {1, 2, 3} => {0, 1, 2}) 2) 특수 문자 및 0을 {10, 11.. 2021. 9. 3.