알고리즘/백준저지

백준저지 9095번 1, 2, 3 더하기
출처: https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 생각 주어지는 수가 11보다 작다고 명시되어 있기 때문에 처음부터 12칸짜리 배열을 만들고 풀었다. 매번 초기화해 줄 필요는 없었던 것 같다. 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class BOJ9095 { public sta..

백준저지 3085번 사탕 게임
출처: https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ3085 { static int N, max, cnt; static char[][] map; static int[][] d = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; // 위 아래 왼쪽 오른쪽 public s..

백준저지 10158번 개미
출처: https://www.acmicpc.net/problem/10158 10158번: 개미 가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오 www.acmicpc.net 생각 개미를 한 칸씩 이동하도록 생각하면 시간 초과가 난다. 개미가 벽에 부딪힐 때까지 이동시켜도 시간 초과가 난다. 개미 이동을 x축과 y축 각각 따로 생각했다. 개미는 결국 입력받은 시간만큼 x축으로 또는 y축으로 이동한다. 다만 벽에 닿았을 때는 방향이 반대로 바뀌기 때문에 가로와 세로의 2배를 곱해서 계산했다. 이전에는 StringBuilder로 모아서 마지막에 출..

백준저지 1244번 스위치 켜고 끄기
출처: https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 코드 // 출처: 백준저지 1244번 스위치 켜고 끄기 https://www.acmicpc.net/problem/1244 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.util...

백준저지 12927번 배수 스위치
출처: https://www.acmicpc.net/problem/12927 12927번: 배수 스위치 첫째 줄에 전구의 상태가 1번 전구부터 차례대로 주어진다. Y는 전구가 켜 있는 경우, N은 전구가 꺼져있는 경우이다. 전구의 개수는 1보다 크거나 같고 1,000보다 작거나 같은 자연수이다. www.acmicpc.net 제출 날짜: 2021년 8월 27일 금요일 코드 import java.util.Scanner; public class Main { static char[] light; public static void main(String[] args) { Scanner sc = new Scanner(System.in); light = (sc.nextLine()).toCharArray(); int le..

백준저지 14889번 스타트와 링크
출처: https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 코드 // 출처: 백준저지 14889번 스타트와 링크 https://www.acmicpc.net/problem/14889 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class BOJ14889 { static int N, scor..

백준저지 10989번 수 정렬하기 3
출처: https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 제출 날짜: 2021년 9월 1일 수요일 생각 문제의 메모리 제한이 8MB라고 적혀 있어서 더이상 못 풀고 있었는데 하단에 자바11은 512MB라고 적혀 있어서 다시 시도하게 되었다. 처음에는 그냥 입력을 쭉 받고 Arrays.sort()를 해서 통과했다. 그런데 다른 사람들 코드와 시간 차이가 많이 나서 확인해보니 대부분 카운팅 정렬을 쓰고 있었다. 입력 개수는 많지만 수는 10000 이하이기 때문에 가능한..

백준저지 2669번 직사각형 네개의 합집합의 면적 구하기
출처: https://www.acmicpc.net/problem/2669 2669번: 직사각형 네개의 합집합의 면적 구하기 입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각 www.acmicpc.net 생각 백준저지 2563번 색종이 문제(https://www.acmicpc.net/problem/2563)와 동일하게 풀었다. 코드 // 출처: 백준저지 2669번 직사각형 네개의 합집합의 면적 구하기 https://www.acmicpc.net/problem/2669 import java.util.Scanner; public class Main { static int..

백준저지 10163번 색종이
출처: https://www.acmicpc.net/problem/10163 10163번: 색종이 평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘 www.acmicpc.net 제출 날짜: 2021년 8월 28일 토요일 생각 백준저지 2563번 색종이 문제(https://www.acmicpc.net/problem/2563)와 거의 동일하게 풀었다. 코드 // 출처: 백준저지 10163번 색종이 https://www.acmicpc.net/problem/10163 import java.io.BufferedReader; import java.io.IOException; im..

백준저지 15656번 N과 M (7)
출처: https://www.acmicpc.net/problem/15656 15656번: N과 M (7) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 제출 날짜: 2021년 8월 28일 토요일 생각 백준저지 N과 M 시리즈 중 3번(https://www.acmicpc.net/problem/15651)과 거의 동일한 문제다. 그냥 Scanner와 System.out.println()을 사용했더니 시간 초과가 나서 BufferedReader, BufferedWriter, StringTokenizer, StringBuilder를 몽땅..