목록전체 글 (153)
Dazzling 개발 노트
[백준] 14916 - 거스름돈 (Java) 문제 https://www.acmicpc.net/problem/14916 풀이/후기 그리디 알고리즘을 사용하여 풀이한다. 2원과 5원을 이용해 가장 적은 동전으로 거슬러야 하기 때문에 5원으로 먼저 계산한다. 5로 나누어 떨어지지 않으면 N에서 2원을 빼주면서 cnt를 늘려주는 것이 포인트였던 것 같다. 코드 package Greedy; import java.io.*; public class Problem14916 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int ..
[백준] 16926 - 배열 돌리기1 (Java) 문제 https://www.acmicpc.net/problem/16926 풀이/후기 주어지는 배열의 겉부분과 속부분을 나눠서 회전해야 하는 점이 어려웠다. 풀이를 이것저것 찾아보니 보통 회전하는 그룹(ex. 겉부분, 속부분 등)으로 분리한 후 상, 하, 좌, 우를 각각 회전시켜주는 방법이 많았다. 회전시켜주는 방법은 복잡한 방법도 많았지만, 그래프 문제를 풀며 가장 익숙한 dir 배열을 사용해 회전시켰다. 코드 package Implementation; import java.io.*; import java.util.*; public class Problem16926 { static int N, M, R; static int[][] arr; static i..
[백준] 14467 - 소가 길을 건너간 이유1 (Java) 문제 https://www.acmicpc.net/problem/14467 풀이/후기 코드 package Implementation; import java.io.*; import java.util.StringTokenizer; public class Problem14467 { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] arr = new int[11]; int cnt = 0..
[백준] 2729 - 이진수 덧셈 (Java) 문제 https://www.acmicpc.net/problem/2729 풀이/후기 이진수가 나올 때마다 어떻게 풀어야할지 감이 안잡힌다,, 십진수로 변환하여 풀면 쉬울 것 같은데, 이런 문제는 대부분 엄청 큰 수까지 나오기 때문에 그렇게 접근할 수는 없다,, 그리고 덧셈의 경우, 뒷자리 부터 비교를 하는데 그럼 결과가 역순이 된다. StringBuilder를 평소에 자주 사용하는 편인데 이 문제 덕분에 reverse()로 역순으로 출력이 가능한 것을 알게 되었다. 추가적으로 문제에서 요구하는 출력 조건이 까다로운데, 예외적 테스트케이스로 000 000 으로 주어졌을때 결과는 000이 아니라 0으로 출력되어야 한다. 즉 0이 문자열의 앞에서 겹쳐지는 경우를 고..
[백준] 1305 - 광고 (Java) 문제 https://www.acmicpc.net/problem/1305 풀이/후기 코드 package KMP; import java.io.*; public class Problem1305 { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int L = Integer.parseInt(br.readLine()); String str = br.readLine(); int lastPi = getLastPi(str); System.out.println(L - lastPi); } st..
[백준] 1212 - 8진수 2진수 (Java) 문제 https://www.acmicpc.net/problem/1212 풀이/후기 브론즈 문제이지만 디테일이 중요한 문제였다. 일단 8진수를 바로 2진수로 변경하는 방법이 떠오르지 않아 8진수 > 10진수 > 2진수 이렇게 변환하는 것을 생각했는데, 이 풀이는 오답이다. 8진수는 한 자리씩 잘라 3자리의 2진수로 변경이 가능하다. 3 = 011 1 = 001 4 = 100 314 = 011001100 수는 반드시 1로 시작해야 하므로 가장 앞의 0은 제거해야 한다. 미리 8진수로 나올 수 있는 2진수를 배열로 구성해 두고, 주어진 8진수를 한 자리씩 잘라 해당되는 배열의 값으로 대체하여 StringBuilder에 넣어준다. 완성된 StringBuilder에..
[프로그래머스] 자연수 뒤집어 배열로 만들기 (Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12932# 풀이/후기 쉽게 풀었는데 일부 테스트케이스에서 오답 처리가 되었다. 원인은 (int) 형변환 시에 (n%10)을 n%10로 적어서 정상적인 형변환이 이루어지지 않아서였다. 사소한 부분을 실수하니 찾는데 시간이 좀 걸렸다. 그래도 하나 또 알아간다. 코드 class Solution { public int[] solution(long n) { //n = 5000; String str = String.valueOf(n); int[] answer = new int[str.length()]; int i=0; while (n > 0){ a..
[백준] 4963 - 섬의 개수 (Java) 문제 https://www.acmicpc.net/problem/4963 풀이/후기 일반적인 그래프탐색 문제지만, 대각선으로 인접한 경우에도 한 가지로 판단하는 문제였다. 즉, 상하좌우 + 대각선까지 고려해야한다. 대각선은 현재 지점을 기준으로 {-1,-1}, {-1,1}, {1,1}, {1,-1}인 것만 생각한다면 쉽게 풀 수 있다. dir에 상하좌우 4개와 대각선 4개까지 총 8개 경우를 넣어주면 된다. 예전엔 대각선 어려울 줄 알고 겁먹었었는데, 생각해보니 굉장히 간단하게 풀 수 있었다~ 코드 package GraphTheory; import java.io.*; import java.util.*; public class Problem4963 { static..