본문 바로가기

Coding Test/Problems29

[프로그래머스/Java] 둘만의 암호 (Level 1) 문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이String 자료형에서는 다른 알파벳으로의 변환이 어려워서 char 자료형으로 변환 후 아래와 같이 풀이를 진행했다.1. 현재 문자가 마지막 알파벳인 'z'인 경우 'a'로 변환, 나머지 알파벳에 대해서는 다음 순서의 알파벳으로 변환 (ex. 'b' → 'c')2. 변환된 문자가 문자열 skip을 구성하는 문자라면 이동하는 최대 횟수(index)를 1 증가3. 위 내용을 수행할 때마다 count를 1 증가시키며 최대 index만큼 과정 반복소스코드 2025. 10. 12.
[프로그래머스/Java] 콜라 문제 (Level 1) 문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이빈 병 a 당 받을 수 있는 콜라 개수 b와 콜라 문제를 시작하기 전 가지고 있는 빈 병 개수 n을 변수로 두고 문제를 접근했다.단순 구현/시뮬레이션 문제였기 때문에 테스트케이스를 몇 가지 추가해보면서 문제를 풀 수 있었다.a: 2, b: 1, n: 1 → Return: 1a: 3, b: 1, n: 1 → Return: 1a: 3, b: 2, n: 3 → Return: 2a: 3, b: 1, n: 4 → Return: 1a: 5, b: 4, n: 10 → Return: 24소스코드 2025. 10. 9.
[BOJ] 백준 10971번 - 외판원 순회 2(with Java) 문제풀이1. 한 노드에서 다른 노드로 이동하는데 필요한 비용 데이터를 저장하기 위해서 인접리스트를 선언하고 값을 저장한다.2. 최소 비용을 구하기 위해서 편의상 answer를 최대값으로 초기화 및 출발 지점 i를 방문처리하고 DFS를 시작한다.3. DFS 메소드에서 매개변수 start와 인접한 각각의 노드까지의 이동 비용이 0이 아니고 방문하지 않았는지 확인한다.4. 조건을 모두 만족하면 인접 노드 adj.idx를 방문처리 후에 i에서 출발하고 다시 돌아올 때까지 필요한 비용 sum에 인접 노드까지의 비용 adj.cost를 더해준다.5. DFS를 수행할 때마다 start와 sum을 갱신하고 메소드를 빠져나올 때 다음 경우의 수를 확인하기 위해서 백트래킹을 수행한다.6. target 노드를 제외한 나머지 .. 2022. 6. 30.
[BOJ] 백준 2210번 - 숫자판 점프(with Java) 문제2210번: 숫자판 점프111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다.www.acmicpc.net풀이가능한 경우의 수를 찾는 문제이므로 정답 출력용 집합을 만들어준다.각 위치에 대한 값이 모두 다를 수도 있고 이전에 방문한 위치를 재방문할 수 있으므로 전체에 대해서 DFS를 시작한다.6자리 숫자를 만들어야하므로 다음 DFS를 수행할 때마다 nextVal을 통해서 값을 갱신하고 depth+1을 통해서 자릿수를 갱신한다.depth가 6이 되면 answer에 값을 추가하고 반환한다.모든 위치에 대해서 위의 과정을 반복한 .. 2022. 6. 30.
[BOJ] 백준 4963번 - 섬의 개수(with Java) 알고리즘 입력에 의해 프로그램의 종료가 결정되므로 while(true) 안에서 값을 입력받고 검사한다. 값이 유효하다면 각각의 위치에 대해서 값이 1이고 방문하지 않았는지 확인하고 DFS를 시작한다. 각 위치에 대해서 DFS를 수행한 이후에 cnt를 1씩 증가시키고 테스트케이스가 끝날 때마다 answer에 cnt를 추가한다. 1번에서 검사한 값이 유효하지 않으면 반복문을 탈출하고 answer에 포함된 값들을 순서대로 출력한다. 소스코드 문제링크 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 2022. 6. 30.
[BOJ] 백준 11060번 - 점프 점프(with Java) 알고리즘 미로에서의 현재 위치와 이동 횟수를 구하기 위해서 Node 클래스를 정의한다. 0번 이동한 상태에서 0번 위치에서 시작할 때 만들어지는 객체로 BFS를 시작한다. 현재 위치 idx에서 한번에 최대 arr[idx]만큼 이동할 수 있으므로 각각의 경우에 대해서 조건에 부합하는지 확인하고 탐색한다. 조건에 부합하면 방문처리해주고 다음 방문할 위치 idx와 time+1을 객체로 만들어서 큐에 넣어준다. 큐에서 꺼낸 객체의 번호가 끝 번호라면, 해당 객체의 time을 출력하고 종료한다. 소스코드 문제링크 11060번: 점프 점프 재환이가 1×N 크기의 미로에 갇혀있다. 미로는 1×1 크기의 칸으로 이루어져 있고, 각 칸에는 정수가 하나 쓰여 있다. i번째 칸에 쓰여 있는 수를 Ai라고 했을 때, 재환이는.. 2022. 6. 30.
[BOJ] 백준 2667번 - 단지번호붙이기(with Java) 알고리즘 값이 1이고 방문하지 않은 각각의 위치에 대해서 방문처리해준 후에 DFS를 시작하고 types를 1 증가시킨다. DFS를 재귀적으로 수행할 때마다 cnt를 1씩 증가시키고, 재귀문을 빠져나오면 answer에 cnt 값을 추가한다. cnt를 재사용하기 때문에 cnt를 0으로 초기화해주고, 위의 과정을 모든 위치에 대해서 반복한다. answer를 오름차순으로 정렬해준 후에 types와 함께 출력한다. 소스코드 문제링크 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 2022. 6. 28.
[BOJ] 백준 2606번 - 바이러스(with Java) 알고리즘 1번 컴퓨터에서 시작하므로 방문했음으로 처리한 후에 1번에 대해서 DFS를 수행한다. DFS 이후에 visited 배열에서 값이 true인 원소의 개수만큼 answer를 1 증가시킨다. 감염된 컴퓨터의 개수에 대해서 묻고 있으므로 answer의 값이 1이상이면 answer에서 1을 빼준 후에 출력한다. 소스코드 문제링크 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 2022. 6. 28.
[BOJ] 백준 18405번 - 경쟁적 전염(with Java) 알고리즘 바이러스의 위치와 몇 초에 바이러스가 퍼졌는지 계산하기 위해서 Virus 클래스를 생성한다. 배열의 원소를 입력받을 때 값이 1이상인 경우에 대해서 grid[i][j]에 해당하는 인접 리스트에 좌표값을 갖고 있는 Virus 객체를 각각 삽입한다. 1부터 K까지의 바이러스 번호를 보유한 인접리스트로부터 좌표값을 갖고 있는 Virus 객체를 큐에 각각 추가한다. BFS를 수행하면서 다음 위치로 이동할 수 있을 때마다 좌표값과 현재 바이러스가 퍼지기까지 걸린 시간으로 Virus 객체를 구성한다. 위의 과정을 바이러스가 퍼지기까지 걸린 시간이 S인 Virus 객체를 큐에서 꺼낼 때까지 수행한다. 소스코드 문제링크 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다... 2022. 6. 28.
[BOJ] 백준 1697번 - 숨바꼭질(with Java) 알고리즘 N에서 BFS를 시작한다. 가장 빨리 찾은 시간을 게산하기 위해서 idx와 time을 원소로 가지는 Node 클래스를 생성한다. 총 3가지의 행동 X-1, X+1, X*2을 할 수 있으므로 각각의 경우에 대해서 이동할 수 있는지 확인한 후에 방문 처리 및 time을 1 증가시켜서 큐에 넣어준다. 큐에서 꺼낸 node.idx의 값이 K와 일치하면 answer에 값을 저장하고 반복문을 탈출한다. 소스코드 문제링크 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 2022. 6. 28.