본문 바로가기

728x90

백준

(129)
[백준] 10825번 국영수 [Python] - 정렬 세 과목 점수와 이름 순서대로 정렬하는 문제 더보기 문제 도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어진다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하시오. 국어 점수가 감소하는 순서로 국어 점수가 같으면 영어 점수가 증가하는 순서로 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 $($단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.$)$ 입력 첫째 줄에 도현이네 반의 학생의 수 N $($1 ≤ N ≤ 100,000$)$이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보..
[백준] 2578번 빙고 [Python] 5x5 빙고판$($1~25$)$에서 사회자가 불러주는 숫자를 지워가며 3 줄을 완성 시키는 게임 더보기 문제 빙고 게임은 다음과 같은 방식으로 이루어진다. 먼저 아래와 같이 25개의 칸으로 이루어진 빙고판에 1부터 25까지 자연수를 한 칸에 하나씩 쓴다 다음은 사회자가 부르는 수를 차례로 지워나간다. 예를 들어 5, 10, 7이 불렸다면 이 세 수를 지운 뒤 빙고판의 모습은 다음과 같다. 차례로 수를 지워가다가 같은 가로줄, 세로줄 또는 대각선 위에 있는 5개의 모든 수가 지워지는 경우 그 줄에 선을 긋는다. 이러한 선이 세 개 이상 그어지는 순간 "빙고"라고 외치는데, 가장 먼저 외치는 사람이 게임의 승자가 된다. 철수는 친구들과 빙고 게임을 하고 있다. 철수가 빙고판에 쓴 수들과 사회자가 부르는 수의..
[백준] 1913번 달팽이 [Python] 숫자를 달팽이 모양을 그리며 순서대로 배치하고, 입력받은 숫자의 좌표를 구하는 문제 더보기 문제 홀수인 자연수 N이 주어지면, 다음과 같이 1부터 N2까지의 자연수를 달팽이 모양으로 N×N의 표에 채울 수 있다. 9 2 3 8 1 4 7 6 5 25 10 11 12 13 24 9 2 3 14 23 8 1 4 15 22 7 6 5 16 21 20 19 18 17 N이 주어졌을 때, 이러한 표를 출력하는 프로그램을 작성하시오. 또한 N2 이하의 자연수가 하나 주어졌을 때, 그 좌표도 함께 출력하시오. 예를 들어 N=5인 경우 6의 좌표는 $($4,3$)$이다. 입력 첫째 줄에 홀수인 자연수 N$($3 ≤ N ≤ 999$)$이 주어진다. 둘째 줄에는 위치를 찾고자 하는 N2 이하의 자연수가 하나 주어진다. 출..
[백준] 1269번 대칭 차집합 [Python] - 집합 대칭차집합$($Symmetric difference$)$ \begin{align}{A}\triangle{B} = ({A}\cup{B})\backslash({A}\cap{B}) \\=({A}\backslash{B})\cup({B}\backslash{A})\end{align} 더보기 문제 자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, $($A-B$)$와 $($B-A$)$의 합집합을 A와 B의 대칭 차집합이라고 한다. 예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로,..
[백준] 1002번 터렛 [Python] - 두 원의 위치 관계 두 원의 위치 관계: 일치, 두 점에서 만난다, 한 점에서 만난다$($접한다$)$, 만나지 않는다. 두 점 사이의 거리 $\sqrt{(x_{1}-x_{2})^2-(y_{1}-y_{2})^2}$ 삼각형의 성립 조건 세 변 a, b, c에 대하여$($가장 긴 변을 c라고 하자$)$ $c < a+ b$ 위 개념으로 교점의 존재성/ 개수 구했습니다. 더보기 문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 $($x_1, y_1$)$와 백승환의 좌표..
[백준] 15654, 15655번 N과 M[5, 6] [Python] - 순열, 조합 N과 M$($1$)$, $($2$)$와 거의 같아서 링크와 코드만 올려봅니다. 15654번: N과 M (5) (acmicpc.net) import sys from itertools import permutations input = sys.stdin.readlin N, M = map(int, input().split()) li = sorted(list(map(int, input().split()))) pm = permutations(li, M) for p in pm: print(*p) 15655번: N과 M (6) (acmicpc.net) import sys from itertools import combinations input = sys.stdin.readline N, M = map(int, input..
[백준] 11726번 2×n 타일링 [Python] 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수 더보기 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. $($1 ≤ n ≤ 1,000$)$ 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. n개의 2x1 블럭과 r개의 1x2 블럭이 있을 때, 1x2 블럭이 들어갈 수 있는 2x1 블럭 사이 공간은 n+1개이고, 중복 가능 하므로 \begin{align} _{n+1}H_{r} = _{n+1+r-1}C_{r} = _{n+r}C_{r}\end{align} import sys from mat..
[백준] 1475번 방 번호 [Python] 방 번호 숫자를 만들기 위해 필요한 0~9 숫자 세트 개수 구하기 더보기 문제 다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다. 다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. $($6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.$)$ 입력 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 필요한 세트의 개수를 출력한다. 입력 받은 문자를 리스트로 바꾸면서 digit별로 구분해서 각 문자$($숫자$)$의 개수를 list.c..
[백준] 10845번 큐 [Python] 큐$($Queue$)$는 데이터를 저장하는 자료구조로, 먼저 들어온 데이터가 먼저 나가는 선입선출$($FIFO, First-In-First-Out$)$ 원칙을 따릅니다. 파이썬의 collections 모듈에서는 deque 클래스를 사용하여 큐를 구현할 수 있습니다. 더보기 from collections import deque # 큐 생성 queue = deque() # 데이터 enqueue queue.append(1) queue.append(2) queue.append(3) # 큐에서 데이터 dequeue data = queue.popleft() print(data) # 출력: 1 # 큐가 비어있는지 확인 if not queue: print("큐가 비어있습니다.") 위의 예시에서는 파이썬 deque를 사..
[백준] 10866번 덱 [Python] 덱$($deque, double-ended queue$)$은 파이썬의 collections 모듈에 포함된 자료구조로, 양쪽 끝에서 원소를 추가하거나 제거할 수 있는 큐$($Queue$)$의 확장된 형태입니다. 덱은 리스트$($list$)$와 유사하지만, 리스트보다 효율적인 양방향 연산을 지원합니다. 이러한 특징 때문에 덱는 다양한 상황에서 유용하게 사용될 수 있습니다. 더보기 from collections import deque # 데크 생성 deque_list = deque() # 데크의 오른쪽에 원소 추가 deque_list.append(1) deque_list.append(2) deque_list.append(3) # 데크의 왼쪽에 원소 추가 deque_list.appendleft(0) # 데크 출..
[백준] 10828번 스택 [Python] 스택$($Stack$)$은 데이터를 저장하고 관리하는 자료구조 중 하나로, 후입선출$($Last In, First Out, LIFO$)$ 방식으로 동작합니다. 파이썬에서 스택은 리스트$($list$)$를 활용하여 구현할 수 있으며, 다양한 상황에서 유용하게 사용됩니다. 함수 호출 스택 재귀 함수를 사용할 때 스택은 함수 호출의 형태로 사용됩니다. 재귀 함수는 자기 자신을 호출하는 방식으로 동작하기 때문에 스택을 이용하여 함수 호출 순서를 관리합니다. 재귀적으로 호출되는 함수는 스택에 쌓이고, 함수가 반환되면 스택에서 제거됩니다. 브라우저 뒤로/앞으로 기능 웹 브라우저에서 뒤로 가기, 앞으로 가기 기능은 스택을 사용하여 구현될 수 있습니다. 방문한 페이지의 URL을 스택에 추가하고, 뒤로 가기 버튼을 클릭..
[백준] 2839번 설탕 배달 [Python] 상근이의 설탕 배달 더보기 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. $($3 ≤ N ≤ 5000$)$ 출력 상근이가 배달하는 봉지의..