본문 바로가기

알고리즘/🥈 실버

(39)
백준 26169 세 번 이내에 사과를 먹자 파이썬 풀이 난이도 : 실버3 풀이일 : 11223 https://www.acmicpc.net/problem/26169 26169번: 세 번 이내에 사과를 먹자 5 x 5 크기의 보드가 주어진다. 보드는 1 x 1 크기의 정사각형 격자로 이루어져 있다. 보드의 격자는 사과가 1개 있는 격자, 장애물이 있는 격자, 빈칸으로 되어 있는 격자로 구분된다. 격자의 위치 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 오답 코드 import sys board = [list(map(int, sys.stdin.readline().split())) for _ in range(5)] x, y = list(map(int, sys.stdin.readline().split())) di, dj = [-1, 1, ..
백준 11659 구간 합 구하기 4 자바 풀이 난이도 : 실버3 풀이일 : 08207 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc..
백준 1138 한 줄로 서기 자바 풀이 난이도 : 실버2 풀이일 07252 https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int[] array = new ..
백준 3273 두 수의 합 자바 풀이 난이도 : 실버3 풀이일 : 07226 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner..
백준 1049 기타줄 자바 풀이 난이도 : 실버4 풀이일 : 07204 https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 예제는 링크를 따라가시면 세 가지가 더 있습니다. 풀이 코드 import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.n..
백준 11866 요세푸스 문제0 자바 풀이 난이도 : 실버5 풀이일 : 07097 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.LinkedList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int K = scan.nextInt(); LinkedList que..
백준 9095 1, 2, 3, 더하기 자바 풀이 난이도 : 실버3 풀이일 : 07086 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int T = scan.nextInt(); int[] array = new int[11]; // 초기 정보 array[1] = 1; array[2] = 2; array[3] = ..
백준 1021 회전하는 큐 자바 풀이 난이도 : 실버3 풀이일 : 07075 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.LinkedList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan..
백준 2161 카드1 자바 풀이 난이도 : 실버5 풀이일 : 07064 https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.LinkedList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.n..
백준 2164 카드2 자바 풀이 난이도 : 실버4 풀이일 : 07053 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.LinkedList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.n..
백준 1158 요세푸스 문제 자바 풀이 난이도 : 실버4 풀이일 : 07031 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int N = scan.nextInt(); int K = scan.nextI..
백준 11047 동전 0 파이썬 풀이 난이도 : 실버4 풀이일 : 05011 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 1차 시도 오답 -> 시간초과 # 최초 시도 while 사용 -> 71% 시간초과 # 몫을 먼저 더해주고 K 재할당해야 코인 세기 가능 import sys N, K = map(int, sys.stdin.readline().split()) coin =..
백준 1463 1로 만들기 파이썬 풀이 난이도 : 실버3 풀이일 : 05011 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 # 방문 여부 확인 배열 생성 # 각 숫자를 인덱스로 활용 # 3,2로 나누어 떨어지는 수, 몫 기록 # 숫자 방문 시, 현재까지의 변환 횟수 기록 # 처음 1부터 시작 -> 출력시 -1 import sys from collections import deque N = int(sys.stdin.readline().strip()) visited = [0] * (N + 1) queue = deque([N]) visited..
백준 1991 트리 순회 파이썬 풀이 난이도 : 실버1 풀이일 : 02271 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐 풀이 코드 def preorder(node): # 전위 순회 함수 if node: print(alphabet[node-1], end= '') preorder(left[node]) preorder(right[node]) def inorder(node): # 중위 순회 함수 if node: inorder(..
백준 1697 숨바꼭질 파이썬 풀이, 반례 난이도 : 실버1 풀이일 : 04237 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐풀이 코드# 모든 좌표에 visited 배열 생성 # 순간이동 우선으로 BFS 탐색 # 시간초과 방지 queue 포인터 사용 # 만약, N==K라면 함수 실행 없이 0 출력 import sys def BFS(n): visited[n] = 1 queue = [n] p = 0 while p < ..
백준 11004 K번째 수 파이썬 풀이 난이도 : 실버5 풀이일 : 04171 https://www.acmicpc.net/problem/11004 11004번: K번째 수수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.www.acmicpc.net링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐풀이 코드import sys n, k = map(int, sys.stdin.readline().split()) num = list(map(int, sys.stdin.readline().split())) num.sort() print(num[k-1])sort 를 사용해 정렬 한 후 주어진 K번째 수를 출력하기 위해 인덱스 (K-1) 출력메모 - sort() : 기존의 리스트..
백준 11724 연결 요소의 개수 파이썬 풀이, 시간초과, 반례 난이도 : 실버2 풀이일 : 04145 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주www.acmicpc.net링크로 이동하기 귀찮은 분들을 위한 캡쳐 연결 요소는 길을 통해 갈 수 있는 정점 무리 의미1차 시도 오답import sys n, m = list(map(int, sys.stdin.readline().split())) load = [[0] * (n+1) for _ in range(n+1)] for _ ..
백준 5567 결혼식 파이썬 풀이 난이도 : 실버2 풀이일 : 04134 https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net 링크로 이동하기 귀찮은 분들을 위한 캡쳐 풀이 과정 처음에는 친구관계로 엮여 있지 않고 동떨어져 있는 사람을 제외한 모든 사람을 초대한다고 이해했는데, 힌트를 보니 상근이의 친구와 친구의 친구에 해당하는 사람을 세는 문제였다. - 2차원 배열로 친구 관계를 저장하고, queue를 이용한 BFS로 동기들과 상근이의 관계를 리스트에 기록 - 상근이..
백준 2644 촌수계산 파이썬 풀이, 반례 난이도 : 실버2 풀이일 : 04123 https://www.acmicpc.net/problem/26442644번: 촌수계산사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어www.acmicpc.net링크로 이동하기 귀찮은 분들을 위한 캡쳐1차 시도 오답import sys def find(num, l): queue = [] queue.append(num) while queue: k = queue.pop(0) if parent[k]: l.append(parent[k]) queue.append(parent[k]) return m = int(sys..