본문 바로가기

728x90

IT/Python

(167)
[백준] 1543번 문서 검색 [Python] 주어진 문자열에 그 다음 주어진 문자열이 중복 없이 몇 번 들어 있는지 구하는 문제 더보기 문제 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다. 세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 않게 등장하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문서가 주어진다. 문서의 길이는 최대 2500이다. 둘째 줄에 검색하고 싶은 단어가 주어..
[백준] 10610번 30 [Python] - 정수 주어진 정수의 자리수를 바꾸어서 가장 큰 30의 배수 만들기 더보기 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 10의 배수 : 2와 5의 배수 >>> 일의 자리 수가 0인 수 3의 배수 : 각 자리수의 합이 3의 배수 12 > 1+2 = 3 234 > 2+3+4 =9 12..
[백준] 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) # 데크 출..