목록알고리즘 (193)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/8979 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 풀이 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) s = [] for i in range(n): s.append(list(map(int, input().split()))) s.sort(key=lambda x : (-x[1], -x[2], -x[3])) for i in range(..
문제 링크 https://www.acmicpc.net/problem/3049 3049번: 다각형의 대각선 세 대각선이 한 점에서 만나지 않는 볼록 N각형이 주어졌을 때, 대각선의 교차점의 개수를 세는 프로그램을 작성하시오. 아래 그림은 위의 조건을 만족하는 한 육각형의 교차점 그림이다. 모든 www.acmicpc.net 풀이 코드 n = int(input()) print(int(n*(n-1)*(n-2)*(n-3)/24)) 코드 해석 사각형을 몇 개 만들 수 있는지 알면 대각선들의 꼭짓점의 총개수도 구할 수 있다. n개의 꼭지점 중에 4개의 꼭짓점을 순서 없이 고르는 연산은 n*(n-1)*(n-2)*(n-3)/24이다.
문제 링크 https://www.acmicpc.net/problem/9656 9656번: 돌 게임 2 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 풀이 코드 n = int(input()) print("CY" if n % 2 else "SK") 코드 해석 짝수면 SK 홀수면 CY를 출력한다.
문제 링크 https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 풀이 코드 n = int(input()) a = [] card = [i for i in range(1, n + 1)] while len(card) != 1: a.append(card.pop(0)) card.append(card.pop(0)) for j in a: print(j, end=' ') print(card[0]) 코드 해석 카드 배열을 만든 뒤 앞카드를 버리고 두번쨰 카드를 뒤에..
문제 링크 https://www.acmicpc.net/problem/1312 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net 풀이 코드 A,B,N = map(int, input().split()) for i in range(N) : A = (A%B)*10 result = A//B print(result) 코드 해석 런타임 에러때문에 수학적인 방식으로 풀이하였다.
문제 링크 https://www.acmicpc.net/problem/1417 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 풀이 코드 n = int(input()) one = int(input()) vote = [] count = 0 for _ in range(n - 1): vote.append(int(input())) vote.sort(reverse=True) if n == 1: print(0) else: while vote[0] >= one: one += 1 vote[0] -= 1 count ..
문제 링크 https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 풀이 코드 import sys word = list(map(str, sys.stdin.readline().rstrip("\n"))) res = [] for i in range(1, len(word) - 1): for j in range(i + 1, len(word)): first = word[:i] second = word[i:j] third = word[j:] first.reverse(..
문제 링크 https://www.acmicpc.net/problem/15688 15688번: 수 정렬하기 5 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이며, 같은 수가 여러 번 중복될 수도 있다. www.acmicpc.net 풀이 코드 import sys M=[] N=int(input()) for _ in range(N): M.append(int(sys.stdin.readline())) for i in sorted(M): print(i) 코드 해석 수를 입력받아 배열에 저장 한 후 정렬한 후 출력한다.