본문 바로가기

전체 글115

(#1260 Java) DFS와 BFS 문제 해결 그냥 대놓고 BFS와 DFS를 구하라고 하는 문제이다. 그냥 전형적인 방식으로 수월하게 코드를 작성하고 있었는데, 생각보다 꽤 많은 문제에 부딪혔다. 우선 Gragh와 Visited 배열을 main함수 밖에 크기까지 선언해서 계속 범위 오류가 났다. 이 부분을 주의해서 코드를 보면 좋을 것 같다. 또한, 원래 dfs를 구현할 때 재귀를 이용하는 게 훨씬 쉽지만, 이번에는 스택을 이용했다가, 문제에서 요구하는 작은 번호의 정점을 먼저 방문하는 조건을 충족하지 못 해 그냥 추가적인 코드를 짜지 않고 재귀를 이용하는 코드로 바꿨다...ㅎ 먼저 크기를 정하지 않고 static으로 main 함수 밖에 변수들을 선언해준다. static final int Max_N = 1000; static int N, .. 2024. 2. 29.
(#16173 Java) 점프왕 쩰리 (Small) 전형적인 dfs 코드이다. DFS/BFS 문제가 코테에서 가장 많이 나오는 문제 유형이라고 한다. 아직 문제를 풀어본 경험이 없어 문제를 풀기 전 유튜브에서 문제 유형들과 기본적인 기초들을 공부했는데, 기본적인 틀은 정해져있는 것 같았다. 문제를 보고 어떻게 구상해야할지 연습이 많이 필요할 것 같다. 문제 해결 먼저 정사각형의 구역에서 젤리가 움직인다고 하니 칸 수를 입력받을 N과 2차원 배열, dfs에서 필수적인 boolean 타입의 방문여부 배열을 선언해준다. 또한 젤리가 오른쪽과 아래 방향으로만 움직일 수 있다고 했으니 이를 위한 좌표 값들을 만들어주자. static int N; static int[][] arr; static boolean[][] visited; //방문 여부 static int[.. 2024. 2. 28.
(#2903 Java) 중앙 이동 알고리즘 문제 이해 규칙을 찾는 게 어려웠던 문제이다. 한 변의 점의 개수가 2의 N제곱에서 1을 더한 값이 되고, 총 점의 개수는 한 변의 점의 개수의 거듭 제곱이 된다. 문제 해결 먼저 N을 입력 받는다. Scanner in = new Scanner(System.in); int N = in.nextInt(); 입력받은 N을 이용하여 2의 거듭제곱에 1을 더한 값을 계산하고, 그 값을 제곱하여 최종 result 변수에 담아 출력하면 된다. 이 때 Math.pow 메서드의 반환 타입이 double이기 때문에 int형으로 형변환을 해주었다. int result = ((int) Math.pow(Math.pow(2, N) + 1, 2)); System.out.println(result); 참고로 제곱을 구하는 Math.. 2024. 2. 27.
(#2720 Java) 세탁소 사장 동혁 문제 이해 우리나라 돈으로 이해해보자. 만약 1350원이 있으면, 1350을 500으로 나눈 몫이 2이므로 500원짜리는 2개를 거슬러줄 것이고, 나머지 350은 다음 단위인 100으로 나눈 몫으로..그 나머지는 그 다음 단위로.. 이런식으로 나가면 된다. 그리고 이 문제에서는 그 몫을 차례대로 출력하면 된다. 문제 해결 우선 테스트 케이스와를 입력받을 스캐너 객체를 생성해주고, 각각 거스름돈의 단위 변수를 만들어준다. Scanner in = new Scanner(System.in); int c = in.nextInt(); int q = 25; int d = 10; int n = 5; int p = 1; 테스트 케이스의 개수만큼 반복할 반복문을 만들어준다. 돈을 입력받고, 큰 단위부터 나누어 몫을 출력시.. 2024. 2. 27.
(#11005 Java) 진법 변환 2 문제 이해 이 문제는 바로 전에 푼 진법 변환1과 정확히 반대되는 문제이다. 이전 문제는 B진법을 10진수로 변환해서 출력하는 문제였는데.. 이번엔 10진수를 B진수로 변환해 출력하면 된다. 한 블로그에서 변환 방법을 그림으로 설명해놓은 것을 보았는데, 코드로 푸는 데에도 이해가 쉬워 나도 해보았다. 문제 해결 N과 B를 입력받을 스캐너 객체를 만들어준다. Scanner in = new Scanner(System.in); int N = in.nextInt(); int B = in.nextInt(); 그리고 최종적으로 출력할 나머지들을 저장해줄 리스트도 선언해준다. 이 리스트를 선언해줄 때 주의해야할 점은 'Character' 타입으로 만들어주어야 한다는 점이다!! ArrayList list = new A.. 2024. 2. 26.
(#2745 Java) 진법 변환 문제 이해 나는 아직도 진법 계산을 정확히 이해하고 있지 못 한 것 같다.. 한 번 제대로 이해할 필요가 있어보인다.. 일단 어떤 진수든 10진수로 바꾸는 방법은 동일하다. ( 각 자리의 10진수 숫자 * 진수의 각 자리수 제곱을 모두 더한 값 : 2진수 1011이면 >> 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 9 ) 내가 아직도 헷갈리고 있는 부분은 ASCII 코드의 값과 정수의 관계이다. 숫자를 그대로 출력할 때는 - '0'를 하고 저장해줘야 한다. WHY?? '0'의 ASCII 코드 값은 48이며, '1'은 49, '2'는 50, ..., '9'는 57이다. 따라서 숫자 문자를 정수로 변환하려면 해당 문자의 ASCII 코드에서 '0'의 ASCII 코드 값을 빼주면 된다. '5'의 .. 2024. 2. 26.
반응형