[백준] 덩치 - Python(파이썬)
·
파이썬/코딩테스트
n명의 사람들의 덩치 순위를 구하는 문제이다. ​ 키와 몸무게가 다른 사람과 비교하여 둘다 높을경우 등수가 위의 사람이고 ​ 키 몸무게가 다른사람보다 둘다 낮을경우 등수가 아래로 내려가는 문제이다. ​ 키와 몸무게가 하나만 높을경우는 동급의 등수를 측정하기로 했다. ​ 나는 등수를 리스트에 담아 그래도 출력해서 왜 결과가 안나오는지 해매었다. ​ 추후 등수를 하나씩 출력하며 공백을 추가하는 값으로 변경하니 바로 정답 n = int(input()) result = [] for i in range(n): result.append(list(map(int, input().split()))) for i in range(n): k = 1 for j in range(n): if i != j and result[i][..
[백준] 분해합 - Python(파이썬)
·
파이썬/코딩테스트
1부터 입력값 n까지 for문 을 돌면서 출력되는 생성자와 입력된 n 값이 ​ 동일하면 return 하는 파이썬 프로그램을 작성하였다. ​ 생성자의 경우 n + 각자리수 합으로 아래와 같이 구현하였다. # 2231 분해합 import sys n = int(sys.stdin.readline()) num = 1 minResult = 0 for i in range(n): result = num + sum(list(map(int, str(num)))) if result == n: minResult = num break num += 1 sys.stdout.write(str(minResult)+'\n')
[백준] 한수 구하기 - Python(파이썬)
·
파이썬/코딩테스트
브루트포스 알고리즘으로 ​ 전체를 다 탐색하면서 결과를 구하는 알고리즘이다. ​ 이문제의 경우 자리수의 합이 등차수열을 이루고 있으면 한수라고 나타내는데 ​ 1부터 99의 경우의 모든 수는 등차수열을 이루고 있고 100 이상 1000이하의 수는 ​ 각 자리수의 합을 비교함으로 한수의 개수를 구하는 프로그램을 구현하였다. n = int(input()) if n < 100: print(n) else: cnt = 0 for i in range(100, n + 1): result = list(map(int, str(i))) a = result[0] - result[1] b = result[1] - result[2] if a == b: cnt += 1 print(cnt + 99)
[백준] 일곱 난쟁이 - Python(파이썬)
·
파이썬/코딩테스트
9명의 난쟁이중 2명은 백설공주의 난쟁이가 아니라고 가정하였다. ​ 이중 for문으로 처음 서있는 난쟁이와 두번째 서있는 난쟁이의 키를 합산하여 ​ 9명의 난쟁이 - 2명의 난쟁이 == 100 이면 또 그때 존재하는 난쟁이들의 위치를 리스트에 담아 result = [] for i in range(9): result.insert(i,int(input())) sum = sum(result) num = 0 check = False for i in range(9): if check == True: break for j in range(i+1, 9): num = sum - result[i] - result[j] if num == 100: result.remove(result[j]) result.remove(res..
[백준] 거북이 - Python(파이썬)
·
파이썬/코딩테스트
# 2959 백준)파이썬 거북이 x = list(map(int, input().split())) x.sort(reverse=True) print(x[1] * x[3])
[백준] 블랙잭 - Python(파이썬)
·
파이썬/코딩테스트
완전 탐색알고리즘으로 블랙잭을 구하는 문제를 풀어보았다. ​ 카듸의 개수는 100이하로 n개의 숫자에서 3장의 카드를 더해 m의 숫자에 최대한 가까운 값을 출력하는 문제이다. ​ 나의 경우 3중 for문으로 3장을 한장씩 나열하여 index가 1개씩 증가하면서 m과 같은 값이 나오면 break로 같지 않으면 ​ 리스트에 담도록 하였다. import sys n ,m = list(map(int, input().split())) card = list(map(int, input().split())) sum = 0 result = [] chk = True for i in range(n-2): if chk == False: break for j in range(i+1, n-1): if chk == False: br..
[백준] 셀프넘버 구하기 - Python(파이썬)
·
파이썬/코딩테스트
# 백준 4673 셀프넘버 num = 1 # 리스트 10000개로 생성 result = []*10000 # 셀프넘버가 아닌값을 구하여 리스트에 담기 while(True): n_list = list(map(int, str(num))) sum = 0 for i in range(len(n_list)): if i == 0: sum = n_list[i] + num else: sum += n_list[i] num += 1 result.append(sum) if sum >= 10000: break result2 = []*10000 num2 = 1 # 1 - 10000 까지 숫자가 담긴 리스트 생성 for j in range(10000): result2.append(num2) num2 += 1 # 셀프넘버인 값을 구하..
[백준] 콘테스트 문제 - Python(파이썬)
·
파이썬/코딩테스트
정렬 알고리즘 문제로서 20개의 점수를 나열하여 10개씩 W대학 K대학 점수를 나눈뒤 상위 3명의 점수 합을 구하는 문제이다. ​ 파이썬으로 두개의 리스트에 값을 나눠서 넣고 정렬을 통해 상위 3개의 점수를 합산하여 출력하였다. # 콘테스트(백준 5576) 정렬문제 result1 = [] result2 = [] for i in range(20): n = input() if i < 10: result1.append(int(n)) else: result2.append(int(n)) result1.sort(reverse=True) result2.sort(reverse=True) sum1 = result1[0] + result1[1] + result1[2] sum2 = result2[0] + result2[1]..
[백준] ATM - Python(파이썬)
·
파이썬/코딩테스트
돈을 인출하는 순서에 따라 총 소요되는 시간이 얼마인가? ​ 소요되는 시간중 최소 시간을 얼마인지 구하는 정렬 알고리즘 문제이다. ​ 오름 차순을 하고 총합을 구하면 시간이 최소값이 되는걸 알수가 있다. ​ 그래서 아래와 같이 정렬후 걸리는 시간의 총합을 모두 더하였다. import sys n = int(sys.stdin.readline()) result = list(map(int, sys.stdin.readline().split())) result.sort() sum = 0 mid = 0 for i in result: mid += i sum += mid sys.stdout.write(str(sum)+'\n')
[백준] 수 정렬하기 2 - Python(파이썬)
·
파이썬/코딩테스트
백준의 수정렬하기와 동일한 문제지만 N의 개수가 1,000,000 개로 단순 input() 과 print()는 시간을 할당하는데 오래걸려 sys.StdIn, sys.StdOut system 언어를 사용하여 시간 단축을 하였다. import sys n = input() result = list() for i in range(int(n)): result.append(int(sys.stdin.readline())) result.sort() for i in result: sys.stdout.write(str(i)+'\n')
[백준] 수 정렬하기 - Python(파이썬)
·
파이썬/코딩테스트
# 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. n = input() result = list() for i in range(int(n)): result.append(int(input())) result.sort() for i in result: print(i)
삽입정렬 및 계수정렬 파이썬
·
파이썬/코딩테스트
삽입정렬의 경우 시간복잡도가 중첩이 두번돌아 n제곱이지만 정렬이 거의 되어있다는 가정이면 퀵정렬보다빠른 O(N)의 속도를 가질수도 있다. 그러므로 데이터를 잘보고 정렬알고리즘을 선택할 필요가 있다. # 삽입정렬은 선택정렬과 같은 시간 복잡도를 가졌지만 거의 정렬되어있는 상태라면 삽입정렬이 빠르다. array = list(map(int, input().split())) for i in range(1, len(array)): for j in range(i, 0, -1): if array[j] < array[j-1]: array[j], array[j-1] = array[j-1], array[j] else: break print(array) 계수정렬 # 계수정렬 모든 원소의 값이 0보다 크커나 같다고 가정 ar..
대전집주인
'파이썬/코딩테스트' 카테고리의 글 목록 (2 Page)