👨‍🏫ps

    [백준] 3107번 IPv6 풀어보기 [Java]

    [백준] 3107번 IPv6 풀어보기 [Java]

    IPv6는 축약이 가능하다. 그래서 축약이 된 IPv6주소가 들어온다면, 축약전으로 출력을 해주는 문제이다. 문제를 풀면서 여전히 구현력이 부족하구나라는 생각이 들었고, 구현 문제를 더 많이 풀어야 겠다는 생각이 들었다. 👨‍🏫 풀이 입력을 :로 split을 해주었다. :로 split을 했을 때, :가 연속으로 나오고 뒤에 숫자가 있는 경우는 :: 사이를 길이가 0인 String 객체로 반환하지만, ::가 맨 뒤에 나오는 경우는 아무 것도 반환하지 않는다. :을 split한 list의 크기(part)를 얻고, 만약 그 list안에 0인 String이 있다면, 크기에서 빼줬다. :으로 split한 list를 하나씩 보았다. 만약, 해당 String의 길이가 0이고, part가 8보다 작다면, 0000:을 ..

    [백준] 1913번 달팽이 풀기 [Java]

    [백준] 1913번 달팽이 풀기 [Java]

    구현 문제를 오랜만에 풀어서인지, 실버4인데,, 헤매고 시간도 오래걸렸다,,,여전히 많이 부족한 사람이다라고 깨닫게 되는 문제였다. 구현 문제가 코딩테스트에서 자주 나오는데 좀 많이 풀어보고, 코드는 좀 더 깔끔하게 짤 수 있도록 해야겠다. 달팽이가 움직이는 모양처럼 숫자를 써내려가는 문제였다. (1,1)에서 N*N로 시작해서 1까지 쓸 수 있도록 👨‍🏫 풀이 구현 문제여서 딱히 풀이는 없지만, 나는 첫번째 행만 N개를 따로 채워주고, 나머지 행 열은 2개씩 짝을 이루어 N-1, N-2, ...., 1로 가는 규칙이 있어서 해당 규칙을 사용해서 풀었다. 오른쪽, 위쪽, 왼쪽, 아래쪽 순으로 가기 때문에, 움직이는 방향을 설정해서 해당 위치에 움직이는 방향에 맞게 움직일 수 있도록 하였다. 👨🏻‍💻 코드 ..

    [백준] 16964번 DFS 스페셜 저지 풀어보기 [Java]

    [백준] 16964번 DFS 스페셜 저지 풀어보기 [Java]

    상대적으로 적은 사람이 푼 문제를 풀어서 뭔가 기분이 좋다. 그리고 오랜만에 1제출 1정답이여서 더 기분이 좋고,,,, 그래프가 주어지고, 해당 그래프를 정점 1 부터 시작해서, DFS로 탐색한 경로가 들어온다. 우리가 찾아야 될 것은 해당 탐색 경로가 DFS로 탐색한 올바른 경로가 맞는지 체크를 하는 것이다. 어느 곳을 먼저 탐색할 지 모르기 때문에, DFS경로는 여러 경로가 나올 수 있다!! 👨‍🏫 풀이 일단, DFS로 진행하여, 해당 그래프의 누가 parent인지 확인을 하고, 자신의 child 수가 몇명인지 확인을 한다. 그리고 입력으로 들어온 Order를 앞에서부터 체크를 한다. 첫 parent는 무조건 1이기 때문에, 1로 설정한다. 현재 순서의 parent와 현재 parent로 설정된 것이 ..

    [백준] 1261번 알고스팟 풀어보기 [Java]

    [백준] 1261번 알고스팟 풀어보기 [Java]

    (1,1)부터 (M,N)까지 가는 루트 중 최소로 벽을 부술 수 벽의 개수를 구하는 문제이다. 👨‍🏫 풀이 단순히 bfs로 풀면된다. 그리고 벽이 있는 경우, 벽을 부수고 가는 경우를 계산한다. 도착지까지 가는 루트 중 벽을 부술 수 있는 벽의 개수를 구하는 문제이기 때문에, Priority queue로 벽을 적게 부수는 경우가 가장 top에 올라오도록 했다. 👨🏻‍💻 코드 package 번1261; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int N,M; static int[][] map; sta..

    [백준] 16929번 Two Dots 풀어보기 [Java]

    [백준] 16929번 Two Dots 풀어보기 [Java]

    그래프의 사이클 여부를 찾는 문제였다. bfs문제였다. 약간 구현에 있어서 복잡한 부분이 있었던 거 같아서, 한번에 못 맞출줄 알았는데, 한번에 "맞았습니다" 나와서 기분이 좋았습니닿ㅎㅎㅎ 👨‍🏫 풀이 bfs로 풀었고, 이전에 방문 했던 적이 있는 곳을 다시 방문한다면 cycle이 생기기 때문에, 이전에 방문했던 이력이 있다면 cycle이 true로 출력하였다. 상하좌우로 다 움직이기 때문에, 바로 이전의 방문했던 곳을 방문할 경우에 cycle이 생긴다고 말할 수 있는데, 이때는 cycle이 생기는 것이 아니기 때문에 처리해줘야 됐다. 그래서 이전에 어디서 넘어왔는지에 대한 정보도 queue에 함께 넘겨줘서 이전에 넘어왔던 곳은 체크 안하도록 하였다. 👨🏻‍💻 코드 package 번16929; impor..