본문 바로가기

Algorithm/[BOJ] - JAVA

(173)
[백준] 2751 : 수 정렬하기 2 JAVA 풀이 문제 제목 아래의 설명란 같은 곳에 언어에 내장된 함수를 쓰는 걸 추천한다기에 Arrays.sort()를 썼는데 시간초과가 나왔다. 코드는 1. N을 입력받는다. 2. N개의 수를 입력받아 배열에 저장한다 3. Arrays.sort()로 정렬한다. 4. System.out.println()으로 배열의 값을 출력한다. 이렇게 구성했는데 4번에서 시간이 오래 걸리는 게 아닌가 하고 StringBuilder를 사용했더니 어찌저찌 통과가 되긴 했다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.Arrays; public class Main{ public stat..
[백준] 1436 : 영화감독 숌 JAVA 풀이 1. 정수 N을 입력받는다. 2. 몇번째 종말의 숫자인지 셀 변수 cnt를 생성한다. 3. 변수 i를 666부터 1씩 증가시켜나가면서 i에 "666"이 포함될 때마다 cnt를 증가시킨다. -> String.contains() 메서드를 사용하기 위해서 int형 i를 Integer.toString()으로 스트링으로 변환시켜준다. 4. cnt가 N과 같아지는 순간의 i값을 출력하고 반복문을 종료한다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; public class Main{ public static void main(String[] args) throws IOException{ Buff..
[백준] 2231 : 분해합 JAVA 풀이 import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; public class ArrayEx1{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); /* 0부터 N보다 작은 수의 분해합을 구함 분해합이 N과 같으면 출력하고 반복문 탈출함 반복문이 끝까지 실행됐으면 생성자가 없다는 뜻이므로 0 출력 */ for(int i=0;i
[백준] 2750 : 수 정렬하기 JAVA 풀이 1. 입력될 수의 개수 N을 입력받는다. 2. N개의 수를 배열에 저장한다. 3. 인접한 두 수를 비교해서 큰 수를 뒤로 옮기는 버블 정렬을 수행한다. import java.io.InputStreamReader; import java.io.IOException; import java.io.BufferedReader; public class Main{ 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 in..
[백준] 1018 : 체스판 다시 칠하기 JAVA 풀이 코딩 문제를 풀면서 내 문해력이 이렇게 부족했던가..라는 생각을 많이 한다. 문제가 요구하는 바가 뭔지 ㅜㅜ 잘 이해가 안된다. 이번 문제도 문제를 이해하는 것부터가 문제였다. 1. NxM 크기의 보드가 있다. 2. 이 보드에서 8x8 크기의 체스판을 만들 것이다. 3. 그 체스판을 만들기 위해 새로 칠해야 하는 칸의 개수가 최소일 때를 찾아야 한다. -> 새로 칠해야 하는 칸의 개수는 체스판의 시작점인 맨 왼쪽 위 칸이 흰색인 경우와 검은색인 경우에 따라 달라진다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public ..
[백준] 7568 : 덩치 JAVA 풀이 단순하게 키와 몸무게를 입력받으면 배열에 저장하고, 자신보다 키가 더 크고 몸무게가 더 많이 나가는 사람의 인원수를 셌다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.StringTokenizer; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //N을 입력받음 int N = Integer.parseInt(br.readLine());..
[백준] 2798 : 블랙잭 JAVA 풀이 이번 문제는 별로 어렵지 않았다. 입력은 첫 번째 줄에 카드의 장수 N, 만들어야 할 수 M 그 다음줄에 N장의 숫자가 주어지는데 이는 StringTokenizer를 이용해서 입력받았다. 매번 세 카드의 합을 저장하는 sum과 그 세 카드의 합 중에서 M과 가장 가까운 값을 저장하는 max라는 변수를 사용했다. 반복문을 다 끝내고나면 max를 출력하는 식으로 코드를 짰다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.StringTokenizer; public class Main{ public static void main(String[] args) thr..
[백준] 11729 : 하노이 탑 이동 순서 JAVA 풀이 이 문제 또한 손으로 직접 N = 3일 경우를 따라 써봤지만 코드를 어떻게 짜야 할지 감이 안왔다. 하하 ㅋㅋㅋㅋ ㅜㅜ 하지만 바로 다른 사람이 짠 코드를 찾아보긴 아쉬워서 하노이탑의 알고리즘부터 공부를 해보자! 하고 서치를 해봤는데 아주아주아주 좋은 글을 찾았다. https://shoark7.github.io/programming/algorithm/tower-of-hanoi '하노이의 탑' 이해하기 '하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다. shoark7.github.io 함수에 어떤 인자가 왜 필요한 것인지 자세히 쓰여있어서 정말 이해하기 쉬웠다. 장대 A, B, C가 있고..