목록알고리즘 (10)
공삼이칠
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 제출 코드 import sys from collections import deque n,k = map(int, sys.stdin.readline().split()) q1 = deque() q2 = deque() for i in range(1,n+1): q1.append(i) while q1: q1.rotate(-k) q2.append(q1.pop()) print("") 파이썬의 deque를 활용해보고자 한다. 처음 N명의 사람들이 앉아있는 걸 deque q1에 저장하고, 요세푸스 ..
https://www.acmicpc.net/problem/2460 2460번: 지능형 기차 2 최근에 개발된 지능형 기차가 1번역(출발역)부터 10번역(종착역)까지 10개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. www.acmicpc.net 제출 코드 import sys people=0 max_people=0 for i in range(10): m,p=map(int,sys.stdin.readline().split()) people-=m people+=p if max_people
https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 1차 제출 코드 import sys list2=[] time=0 n=int(sys.stdin.readline()) list1=list(map(int,sys.stdin.readline().split())) list1.sort() for m in range(n): time+=list1[m] list2.append(time) print(sum(list2)) 필요한 시간의 합의 최솟값을 구하려면 돈을 인출하는 데 걸리는 시간이 적은 ..
https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 제출 코드 n = int(input()) list1 = list(map(int, input().split())) list2 = [] list2.append(min(list1)) list2.append(max(list1)) for i in range(2): print(list2[i], end=' ') 풀이 리스트를 활용합니다. N개의 정수를 list1에 저장합니다..
https://www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 제출 코드 n, x= map(int, input().split()) list1 = list(map(int, input().split())) list2 = [] for i in range(n): if list1[i] < x: list2.append(list1[i]) for i in range(len(list2)): print(list2[i], end=' ') 풀이 리스트를 활용합니다..
https://www.acmicpc.net/problem/2439 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 제출 코드 n = int(input()) star = 0 while star < n: star+=1 print(" "*(n-star)+"*"*star) 풀이 반복문 while문을 활용합니다. 오른쪽 정렬로 출력하라고 하였으므로 공백을 활용하여 표현합니다. 별을 오른쪽부터 출력한 것이 아니라, 왼쪽부터 공백을 출력한다라고 인식하면 쉽게 풀 수 있습니다.
https://www.acmicpc.net/problem/8393 8393번: 합 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net 제출 코드 t = int(input()) total = 0 for i in range(t): i+=1 total += i print(total) 풀이 입력 함수 input()을 활용하여 자연수 n을 받습니다. input() 함수로 입력받은 값은 기본적으로 문자열로 들어옵니다. int()를 활용하여 입력받은 값을 정수형으로 바꾸어 변수 t에 저장합니다. 변수 total을 0으로 정의합니다. 이 과정이 없이 변수 total을 이용한 식을 세울 시 오류가 납니다. 반복문 for문을 활용합니다. i이 0부터 t-1까지 바뀌며 for문..
https://www.acmicpc.net/problem/2741 2741번: N 찍기 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 제출 코드 t = int(input()) for i in range(t): print(i+1) 풀이 입력 함수 input()을 활용하여 자연수 N을 받습니다. input() 함수로 입력받은 값은 기본적으로 문자열로 들어옵니다. int()를 활용하여 입력받은 값을 정수형으로 바꾸어 변수 t에 저장합니다. 반복분 for문을 활용합니다. i이 0부터 t-1까지 바뀌며 for문 안에 있는 문장이 수행됩니다. 우리가 원하는 것은 0부터 t-1의 값을 출력하는 것이 아니라 1부터 t까지의 값을 출력하는 것입니다...
https://www.acmicpc.net/problem/10950 10950번: A+B - 3 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 제출 코드 t = int(input()) for i in range(t): a,b = map(int, input().split()) print(a+b) 풀이 입력 함수 input()를 활용하여 테스트 케이스의 개수 T를 받습니다. input() 함수로 입력받은 값은 기본적으로 문자열로 들어옵니다. int()를 활용하여 입력받은 값을 정수형으로 바꾸어 변수 t에 저장합니다. 반복문 for문을 활용합니다. for문 안에 있는 문장들은 i가 0에서 t-1까지 즉, t번 반복하여 수행됩니다. 각 테스트 케이스는 ..