1) 생각 큰 고민없이 리모콘 숫자만 맞추는 식으로 코드를 작성한 후 '틀렸습니다'를 맛보고 고민을 해서 코드를 작성하였다. 2) 방안 최대 999999 개만 살펴보면 되므로 모든 Case를 살펴보았고, 각각의 숫자를 검사하여 고장난 버튼의 숫자가 있으면 건너뛰고 그렇지 않으면 N값 과의 차이와 그 숫자를 min으로 저장해 둔 후 min의 최소값이 되는시점(N값과의 차이가 가장 작은시점 -> 0부터 검사하므로 점점 작아지다 최저 값을 찍은 뒤 점점 커짐) 에서 반복문을 빠져나왔다.이후 한 번 더 틀린것을 확인하고 101 같은경우 위의 반복문만 확인하면 4가 나오겠지만 기본 채널이 100번이므로 +1만 해주면되는것을 발견하고 100과 N의 차와 위에서 구한 최소값을 비교하여 최소값을 출력하였다. 12345..
1) 생각 우선 이동해야하는것이 2가지이다. 하나는 고슴도치(S)이고 다른 하나는 물(*)이다. 비버(D)와 돌(X)은 움직이지 않으므로 if 문 처리만 잘 해주고 신경쓰지 않는다.침수 예정 지역으로 고슴도치가 이동해서는 안되므로 맨 처음에 물을 먼저 퍼트리는것이 편하다 생각하였다. 2) 방안 물을 맨 처음 퍼트리면 이것은 예상 경로를 미리 놓은 것이기 때문에 물이 한 턴 앞서나가게된다. 따라서 반복문에 들어가기전 한 번 수행후 물의 퍼트림을 1번 쉬어줌으로서 맨 처음 예상 침수 경로만 만들어 놓고 진행하였다. 물의 경우 마지막 퍼트린 지점만 알고있으면 되고, 또 물이 처음에 여러개 등장할 수 있으므로 list로 만들어준후 이전 좌표를 List에서 제거하면서 생성하였다.고슴도치와 물의 이동경로 좌표를 위..
1) 생각 최단 시간을 찾아야하므로 BFS를 이용하여 각 n을 방문해보면서 이미 방문한 지점은 제외하고 k 지점에 도착하는 순간을 찾으면된다. 똑같은 숨바꼭질 문제가 여럿있고 다 비슷한 풀이 방식을 요구한다. 이문제의 경우 다른 점은 최소값 이외에도 최소값에 맞춰서 몇 번이나 도달할 수 있는가를 물어본다. 2) 방안 최소값만 찾으면 될 경우 break 문을 통해 바로 빠져나왔겠지만 그 숫자도 알아야하므로 BFS의 특징인 단계별로 나아간다는 점이 있으므로(뒤로, 앞으로, *2가 모두 +1 씩이므로) 일반적인 BFS 방식으로 풀수있다. 처음 도착하는 값이 최소 값이므로 그 값을 보관해두고 개수를 세고 다른 이전 값과 다른 값이 들어오면 카운트 변수인 cnt를 올리지 않고 반복문을 종료시켰다. 12345678..
1) 생각 문제를 보니 백준님과 알고스팟 운영진분이 친하신가? 라는 생각을 한 번 하게되는 문제였다. 일반적인 Queue를 사용하여 BFS 방식으로 푸니 시간 초과가 발생하였다. 2) 방안 가중치가 최소화 되는 값만 찾으면되므로 다익스트라 방식으로 PriorityQueue로 바꾸어서 가중치가 최소인 값을 우선 탐색하도록 하였다. (PriorityQueue를 사용시 변수가 여러개이면 Compartor나 Comparable을 이용하여 Sorting을 위한 분류 종류를 만들어주어야한다.) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import j..
1) 생각 너무 편안하게 문제그대로만 보았기 때문에 왜 틀린지를 몰라서 시간을 많이 잡아 먹었다.순간이동의 경우 시간을 0초 소비하기 때문에 한 번에 갈 수 있다면 제일 빠른 경로이다.문제에 나와있는 순서대로 왼쪽, 오른쪽, 두 배 순서대로 BFS를 돌리게되면 n=1, k=2 란 반례가 존재하게된다. 2) 방안n=1, k=2일 경우 순서대로 왼쪽, 오른쪽, 두 배를 하면 두배가 되기전에 반복문을 종료하므로 두배를 먼져 체크해주는 것으로 해결하였다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.util.LinkedList;import java.util.Queue;imp..
문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)출력상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로..
문제입력 받은 대로 출력하는 프로그램을 작성하시오.입력입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.출력입력받은 그대로 출력한다.제출1234567891011import java.util.*; public class Main { static Scanner scanner; public static void main(String[] args) { scanner = new Scanner(System.in); while(scanner.hasNextLine()) { System.out.println(scanner.nextLi..
- Total
- Today
- Yesterday