본문 바로가기

전체 글

(263)
[백준] 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가 있고..
[백준] 2447 : 별 찍기 - 10 JAVA 풀이 이번 문제는 규칙이 있다는 건 알겠는데 코드로 어떻게 구현해야 하는지 감이 안와서 정말 어려웠다. 그래서 이 블로그의 포스트를 보고 이해하려고 노력해봤다. https://st-lab.tistory.com/95 [백준] 2447번 : 별 찍기 - 10 - JAVA [자바] www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백.. st-lab.tistory.com 출력 예제를 잘 보면 하나의 블럭을 9등분으로 나눌 수가 있다. 그리고 나눠진 한 조각은 * * * * 공백 * * * * 이렇게 구성되어있다. 이..
[백준] 17478 : 재귀함수가 뭔가요? JAVA 풀이 이 예제 출력을 보고 어떻게 구현할지 생각해봤다. 1. 메인함수에서 "어느 한~~"를 출력한다. 2. 재귀횟수 N을 입력받는다. 3. 재귀를 시작한다. 3-1 재귀 종료 조건은 함수의 인자가 0일 때로 한다. (메인에서 입력받은 N부터 0까지 감소시키며 재귀) 3-2 재귀를 할 때마다 문장 앞에 "____"의 개수가 배로 늘어나는데, 이는 전역변수에 저장해두고 재귀함수 속 변수에서 복사해서 사용한다. (따로 복사해서 사용하지 않으면 재귀종료조건을 만족하고 리턴될 때, 출력되는 "____"의 개수가 줄어들지 않는다.) !!! 자바에서 "는 단독으로 출력할 수 없어서 \"라고 써줘야 한다. import java.io.InputStreamReader; import java.io.BufferedReader; i..