ps

    [백준] 17780번 새로운 게임 풀어보기[Java]

    [백준] 17780번 새로운 게임 풀어보기[Java]

    시뮬레이션은 시간이 오래걸린다,,, 이 문제도 한시간 반 풀었다,,, 중간에 실수도 했다,,,!! 실수를 하면, 찍어서 보는 것도 좋지만, 내 논리가 어디가 틀렸는지 한번 둘러보는 것도 좋을 거 같다,,!! 👨‍🏫 풀이 색들을 저장할 수 있는 map을 만들었고, chess들의 위치를 저장하는 chessHorse를 만들었다. chessHorse는 LinkedList 2차원 배열로 만들어서, 같은 위치에 있는 것들은 linkedList로 연결해줘서 쌓인 것 처럼 보이게 했다,,,!! 움직일 수 있는 말들, 즉 혼자이거나 맨 아래에 위치한 말들을 PriorityQueue에 넣어줬다. 말들은 순서대로 움직이기 때문에, 순서가 작은 순으로 우선순위를 설정해줬다! 다음 위치가 파란색인 경우, 나간 경우 움직이지 않..

    [백준] 13460번 구슬 탈출 2 풀어보기 [Java]

    [백준] 13460번 구슬 탈출 2 풀어보기 [Java]

    시뮬레이션 + bfs 문제였다. 역시나 시뮬레이션은 어렵고 시간이 오래걸렸다. 그것도 gold1이니까 더 오래걸렸다,,,, 실수를 하면 더 오래걸린다는거,,, 실패하면, 질문 검색 들어가서 반례 찾아보는 습관이 있는데, 스스로 찾아보는 습관을 들여야겠다,,, 👨‍🏫 풀이 우선 두 구슬이 같이 움직인다. 그래서 동일한 곳에 도달할 수 없다. 하나씩 움직여준다음, 동일한 곳에 위치해 있으면, 한 구슬을 옮겨줘야 한다!! 1. 빨간 구슬을 벽을 만나거나 구멍을 만날 때까지 움직이기. 2. 파란 구슬을 벽을 만나거나 구멍을 만날 때까지 움직이기. 3. 파란 구슬이 구멍을 통과했다면, 이 case는 넘어간다. 4. 만약 빨간 구슬만 구멍을 통과했다면, 정답!! bfs이기 때문에 그냥 return 해주면 된다. 5..

    [백준] 2629번 양팔저울 풀어보기 [Java]

    [백준] 2629번 양팔저울 풀어보기 [Java]

    관계식이 있는 dp문제였다. 관계식만 잘 구하면 잘풀수 있어 골드3까지는 아닌거 같다!!(내가 뭐라고 평가하나,,,,ㅋㅋㅋ) 👨‍🏫 풀이 나는 세가지 경우를 나눠서 풀었다. 1. 지금 추를 더하는 경우 2. 지금 추를 더하지 않고 넘어가는 경우 3. 지금의 무게가 추보다 작다면, 추에서 현재 무게를 빼고, 크다면, 현재 무게에서 추를 뺀다. Base case 1. weight 음수가 되면 안되고(원래 0이 될일도 없기 때문에 0을 포함해줘야 됐지만, 나는 첫 시작 무게를 0으로 설정을 해줘서 0을 포함해주지 않았다.) 40000보다 크면 안된다. 2. 주어진 추는 한번만 사용가능하기 때문에 주어진 추를 다 방문했는지 체크 👨🏻‍💻 코드 package 번2629; import java.io.Buffered..

    [백준] 1405번 미친 로봇 풀어보기 [Java]

    [백준] 1405번 미친 로봇 풀어보기 [Java]

    단순한 DFS문제였다. 퍼센트를 구하는 거여서, 약간 어떻게 구하지라는 조금의 의문은 있었지만 단순했다!! 👨‍🏫 풀이 인풋을 100으로 나눠주어, 퍼센트로 나타내준다!! 맵이 아니기 때문에, 나가는 것이 존재하지 않기 때문에 충분히 큰 visited를 체크하는 배열을 만들어준다.(움직일 수 있는 최대 숫자가 14이기 때문에 나는 [30][30] 배열을 만들었다) dfs를 진행하면 된다. 만약 N만큼 움직였다면, 현재 퍼센트를 ans에 더해준다. 이전에 방문했던 적이 있다면 단순하지 않은 이동경로이기 때문에 가지 않는다!! 👨🏻‍💻 코드 package 번1405; import java.io.BufferedReader; import java.io.IOException; import java.io.Input..

    [백준] 16234번 인구 이동 풀어보기 [Java]

    [백준] 16234번 인구 이동 풀어보기 [Java]

    구현과 BFS문제이다. 두 문제 연속으로 한번에 맞춰서 기분이 좋다. 하지만, 효율성이 극악인거 같다,,,,좀 더 효율이 어떻게 좋게 만들지 고민을 해야겠다!! 👨‍🏫 풀이 어느 나라가 국경을 서로 여는지 알기 위해서, BFS로 현재 연 국경에 대해서 모두 구했다. 그래서 국경을 연 나라끼리는 동일한 숫자를 저장해줬다. 서로 국경을 연 나라를 조각으로 봤다. 그리고 조각에는 국경을 연 나라들의 인구수 합과 나라 갯수를 저장했다. 조각들의 갯수가 N*N이라면, 모든 나라가 국경을 연 것이 아니기 때문에 시뮬레이션을 끝냈고, 그렇지 않다면, 저장한 조각들의 나라들에게 인구수의 합 / 나라 갯수를 해줘서 저장을 해줬다. 조각들의 갯수가 N*N이 될때까지 계속 해주었다. 👨🏻‍💻 코드 package 번16234..