본문 바로가기
728x90

코딩/백준-자바88

백준 10845번: 큐 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 큐를 만들어서 입력에 맞게 명령어를 처리해 주면 된다. 간단하게 자바 라이브러리를 사용했다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.. 2023. 1. 24.
[자바] 백준 2003번: 수들의 합2 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 설 연휴 쉴땐 쉬더라도 쉬운거 한문제정도는 풀어놓고싶었는데 아..생각보다 잘 안풀렸다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class P2003 { pub.. 2023. 1. 24.
[자바] 백준 2960번: 에라토스테네스의 체 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 문제에서 명시해준 대로 반복문과 조건문을 작성하면 된다. N+1크기의 boolean형 배열을 만들고, 배열을 모두 true로 초기화 한다. 이후 i=2부터, i 2023. 1. 21.
[자바] 백준 1700번: 멀티탭 스케줄링 https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 첫 시도 실패했다. 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; pu.. 2023. 1. 20.
[자바] 백준 2816번: 디지털 티비 https://www.acmicpc.net/problem/2816 2816번: 디지털 티비 2012년 12월 31일 새벽 4시부터 지상파 아날로그 TV방송이 종료되었다. TV를 자주보는 할머니를 위해서, 상근이네 집도 디지털 수신기를 구입했다. 원래 상근이네 집에는 KBS1과 KBS2만 나왔다. 할머니 www.acmicpc.net 1,2,3,4버튼이 있고 이 버튼들을 조합해서 KBS1, KBS2 채널을 1번,2번채널에 위치시키면 된다. 버튼 누르는 횟수가 최소가 되어야한다거나 등의 조건 없이 그냥 KBS1,KBS2를 1번,2번채널에 위치시킬 수만 있으면 모든 답이 정답처리 된다. 나는 간단하게 1번,4번버튼만 사용해서 답을 출력하도록 했다. 1번버튼을 이용해서 KBS1이 나올 때까지 돌린 다음, KBS1.. 2023. 1. 20.
[자바] 백준 5052번: 전화번호 목록 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 첫번째 시도 시간초과 남. 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class P5052 { public static void main(String[] args) throws Number.. 2023. 1. 19.
[자바] 백준 2661번: 좋은수열 https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class P2661 { static boolean isFinish = false; public static void main(String[] args) throws NumberFormatException, IOException { .. 2023. 1. 19.
[자바] 백준 11657번: 타임머신 https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 밸만포드 알고리즘을 이용한다. 1. 출발 노드를 설정한다. 2. 최단 거리 테이블을 초기화한다. 3. 다음의 과정을 N-1번 반복한다. 3-1. 전체 간선 E개를 하나씩 확인한다. 3-2. 각 간선을 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다. 만약 음수 간선 순환을 확인하고 싶다면 3번의 과정을 한 번 더 수행.. 2023. 1. 18.
[자바] 백준 2621번: 카드게임 https://www.acmicpc.net/problem/2621 2621번: 카드게임 근우는 오늘 재미있는 카드 게임을 배우고 있다. 카드는 빨간색, 파란색, 노란색, 녹색의 네 가지 색이 있고, 색깔별로 1부터 9까지 숫자가 쓰여진 카드가 9장씩 있다. 카드는 모두 36(=4x9)장이다. www.acmicpc.net 문제가 정말..너무 길다. 문제 자체는 어려운 게 없었는데, 규칙이 너무 많아서 내가 코드를 짠게 아니라 노동을 한 것 같다. 나는 문제에서 정해준 규칙 1번~9번을 그대로 if-else문으로 만들었는데 다른 방법으로 코드를 짰으면 더 간결했을까? . . 우선 카드 정보를 입력받는데, 카드의 숫자는 num[10] 배열에, 카드의 색깔은 RGBY[4] 배열에 숫자와 색깔의 개수만 세서 넣었.. 2023. 1. 17.
[자바] 백준 1747번: 소수&팰린드롬 https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 우선 팰린드롬인지 판별하는 함수 isPalindrome(int i)를 만들었다 숫자를 String으로 변환한 후, 양 끝에서부터 한쌍씩 비교하여 팰린드롬인지 판별한다. 이후 main함수에서 N부터 maxValue까지 팰린드롬인 숫자라면 소수인지 계산한 후, 값을 출력한다. . . 개인적인 능지 문제로 첫 시도를 실패했다 더보기 import java.io.Buf.. 2023. 1. 17.
[자바] 백준 1652: 누울 자리를 찾아라 https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net 우선 2차원배열을 만들어서 방의 구조를 그대로 저장했다. 이후 이중 반복문을 이용해서 누울 자리를 세면 되는데, 현재 위치와 다음 위치가 모두 빈 공간이라면 누울 수 있는 자리로 인식하면 된다. 누울 자리를 찾았다면 카운트를 증가시키고, 다음 장애물이나 벽이 나올때까지 자리를 이동한다. import java.io.BufferedReader; import java.io.IOException.. 2023. 1. 16.
[자바] 백준 1764번: 듣보잡 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 문제는 정말 간단하다 듣도 못한 사람 N명의 명단을 받은 다음 보도 못한 사람 M명의 명단을 입력받으면서, 듣도보도 못한 명단에 포함 된 사람이면 기록해뒀다가 출력하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; imp.. 2023. 1. 16.
[자바] 백준 3649번: 로봇 프로젝트 https://www.acmicpc.net/problem/3649 3649번: 로봇 프로젝트 각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에 www.acmicpc.net 블럭길이를 오름차순 정렬 한 후에 1개의 블럭을 뽑고, 이 블럭과 합쳐서 구멍을 완벽하게 메꿀 수 있는 블럭이 존재하면 답을 출력하는 방식으로 작성했다. 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collectio.. 2023. 1. 16.
[자바] 백준 1759번: 암호 만들기 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 브루트포스, 백트래킹 문제다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class P1759 { static int L, C; static boolean[] vi.. 2023. 1. 15.
[자바] 백준 2529번: 부등호 https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 모든 경우의 수를 확인해서, 부등호 조건이 맞는 경우에 최솟값과 최댓값을 계산하면 될 것 같았다. 앞에서 어떤 수를 선택하느냐에 따라 뒷자리 경우의 수가 달라지기 때문에 순열 알고리즘을 응용했다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringToken.. 2023. 1. 14.
[자바] 백준 1205번: 등수 구하기 https://www.acmicpc.net/problem/1205 1205번: 등수 구하기 첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보 www.acmicpc.net 모든 점수 + 태수의 점수를 배열에 넣고, 점수 기준 내림차순으로 정렬한다. 이후에 등수를 계산한다. 다음 점수가 현재 점수와 같다면 같은 등수를 부여하고 카운트를 증가시킨다. 다음 점수가 현재 점수와 다르다면(작다면), 현재 등수+카운트만큼 등수를 부여한다. 카운트는 1로 초기화한다. 추가로, 현재 점수가 태수의 점수와 같다면 인덱스를 기록해 둔다. (그러면 반복이 .. 2023. 1. 13.
[자바] 백준 1987번: 알파벳 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 첫 시도 메모리 초과로 실패 아마 StringBuffer를 너무 많이 사용해서 그런 듯 하다. -실패한 코드 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import j.. 2023. 1. 13.
[자바] 백준 10819번: 차이를 최대로 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 숫자 개수가 많지 않기 때문에 모든 경우를 계산해도 시간이 충분하다. 순열 알고리즘을 이용해서 n개의 숫자를 줄세우는 모든 경우의 수를 구하고, 각각의 경우의 결과값을 계산한 후, 최댓값을 출력한다. -(참고)순열을 출력하는 perm함수 더보기 n개의 숫자를 줄세우는 모든 경우를 계산한다. static void swap(int[] arr,int i, int j) { int temp=arr[i]; arr[i]=a.. 2023. 1. 12.
[자바] 백준 2309번: 일곱 난쟁이 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net arr배열에 9난쟁이의 키를 입력받고, 모든 값을 더해서 총합을 계산해 둔다 이중for문을 이용해서 두 난쟁이를 선택, 총합에서 두 난쟁이 키만큼 뺀 값이 100인지 확인한다. 해당 두 난쟁이만 제외하고 오름차순으로 출력한다. (두 난쟁이에 해당하는 키를 -1로 만들고 정렬한 후 2번인덱스부터 출력하면 된다) import java.io.BufferedReader; import java.io.IOExcept.. 2023. 1. 11.
[자바] 백준 1213번: 팰린드롬 만들기 https://www.acmicpc.net/problem/1213 2023. 1. 10.
728x90