[프로그래머스] [2021 카카오 채용연계형 인턴십] 거리두기 확인하기 (파이썬/Python)
📖 문제[프로그래머스] [2021 카카오 채용연계형 인턴십] 거리두기 확인하기 (파이썬/Python)난이도: Level 2유형: 완전탐색, BFS 문제 요약개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔다. 코로나 바이러스 감염 예방을 위해, 응시자들은 대기실에서 일정한 거리를 두고 앉아야 한다. 각 대기실은 5x5 크기로, 총 5개의 대기실이 주어진다. 규칙 요약:응시자끼리는 맨해튼 거리 2 이하로 앉으면 안 된다.단, 거리 2 이내라도 파티션(X) 으로 막혀 있다면 예외적으로 허용한다. 문자 의미:`P`: 사람이 앉아있는 자리`O`: 빈 테이블`X`: 파티션 문제 요구사항:5개의 대기실이 2차원 문자열 배열 형태로 주어진다.각 대기실에 대해 거리두기를 지키고 있다면 `1`, 위반한 사람이 단 한..
[프로그래머스] 게임 맵 최단거리 (파이썬/Python) (자바/Java)
📖 문제[프로그래머스] 게임 맵 최단거리 (파이썬/Python) (자바/Java)난이도: Level 2유형: BFS풀이 시간: 28분문제 요약캐릭터가 `(1,1)`에서 시작해 상대 팀 진영 `(n,m)`까지 이동해야 한다.이동할 수 있는 곳은 1, 이동할 수 없는 벽은 0으로 표시된다.최소 칸 수로 상대 진영에 도착하는 경우의 칸 수를 반환하라.도달할 수 없다면 -1을 반환한다.캐릭터는 상하좌우 네 방향으로 한 칸씩 이동 가능하다.맵 밖으로 나갈 수 없고, 벽(0)은 통과할 수 없다.🔍 문제 접근💡 문제 분석핵심 키워드: 최단거리, 동서남북으로 이동 ⇒ BFS 유형!동서남북으로 인접한 칸만 탐색할 수 있다.`maps`에는 0이 벽을 의미하고 1이 벽이 없는 자리를 의미한다.즉, 매번 이동할 때마다 ..
[프로그래머스/PGS] 타겟 넘버 (파이썬/Python, 자바/Java)
📖 문제[프로그래머스/PGS] 타겟 넘버 (파이썬/Python) (자바/Java)난이도: Level 2유형: DFS(백트래킹)풀이 시간: 30분문제 요약`n`개의 음이 아닌 정수들이 있을 때, 정수들의 순서 변화 없이 더하거나 빼서 `target`과 동일한 값을 만들고자 한다.숫자가 담긴 배열 `numbers`, 타겟 넘버 `target`이 주어질 때, 숫자를 적절히 더하고 빼서 타겟 넘버를 만들 수 있는 방법의 수를 구하라. [1, 1, 1, 1, 1]로 숫자 3을 만드는 방법은 아래와 같이 5가지 방법이 존재한다.-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3🔍 문제 접근💡 문제 분석이 문제는 각 숫자에 대해 더하거나..
[프로그래머스] 점프와 순간이동 (파이썬/Python)
📖 문제[프로그래머스] 점프와 순간이동 (파이썬/Python)난이도: Level 2유형: 그리디, 이진수 변환, 수학적 사고문제 요약아이언 슈트를 입고 거리가 `N`만큼 떨어진 목적지에 최소의 건전지 사용량으로 도달해야 한다.가능한 이동 방식은 '앞으로 `K`칸 점프(건전지 소비)' 또는 '순간이동(거리 × 2, 건전지 소모 없음)'이다.🔍 문제 접근💡 문제 분석`K`칸 앞으로 점프하면 점프하면 `K`만큼 건전지를 사용한다.순간이동은 거리를 2배로 늘리지만 건전지를 소모하지 않는다.결국 목적지 `N`까지 갈 때 점프를 최소화하는 것이 목표이다. 🧠 풀이 아이디어일반적으로 0부터 `N`까지 "가는" 방향으로 접근하면 경우의 수가 너무 많다.반대로 `N`에서 0으로 "되돌아오는" 방식으로 생각하면 단..