본문 바로가기

백준7

[Python] 백준 2869번: 달팽이는 올라가고 싶다 코드 import math a, b, v = map(int, input().split()) v = v - a day = 1 x = math.ceil(v / (a-b)) day += x print(day) 풀이 문제를 읽으면 반복문이 가장 먼저 생각나는데, 시간 제한이 0.25초로 굉장히 짧기 때문에 무조건 실패하는 방법이다.. 따라서, 달팽이가 a만큼을 오른 후 v라는 정상에 도착하지 않으면 다시 b만큼 내려오고, 그걸 반복하는 알고리즘을 반복문 사용없이 구현하는 방법을 생각해야 한다. 난 수학에 약해서인지, 떠올리는데 2시간이 소요되었음 ... 우선, 한 줄에 a, b, v를 int형으로 입력받기 위해 map 함수를 써주었다. 그리고, 정상에 도착하기 직전에는 달팽이가 무조건 마지막으로 a만큼 오르기 .. 2023. 5. 19.
[Python] 백준 1157번: 단어 공부 코드 input_str = input() count = [0] * 26 # The number of alphabet alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] # Counting the alphabets for i in range(len(input_str)): if input_str[i].upper() == 'A': count[0] += 1 elif input_str[i].upper() == 'B': count[1] += 1 elif input_str[i].upper() == 'C': count[.. 2023. 5. 17.
[Python] 백준 4344번: 평균은 넘겠지 코드 C = int(input()) # The number of test case for i in range(C): list_temp = list(map(int, input().split())) N = list_temp[0] # The number of student scores = list_temp[1:] # The students's score sum = 0 avg = 0 count = 0 # the number of students who scored higher than avg # Calculating the avg for score in scores: sum += score avg = sum/N # Calculating the percentage of students who scored high.. 2023. 5. 15.
[Python] 백준 1032번: 명령 프롬프트 코드 N = int(input()) # 파일명의 개수 입력 files = [] # 파일명들을 저장할 리스트 pattern = '' # 파일명의 패턴을 저장할 변수 # 파일명들을 여러 줄에 걸쳐 입력받아 리스트에 저장 for i in range(N): files.append(input()) # 첫 번째 파일명을 기준으로 패턴을 생성 for i in range(len(files[0])): char = files[0][i] # 첫 번째 파일명의 i번째 문자 is_same = True # 모든 파일명의 i번째 문자가 같은지 확인 # 나머지 파일명들과 비교하여 i번째 문자가 모두 같은지 확인 for j in range(1, N): if files[j][i] != char: is_same = False break .. 2023. 5. 14.
[Python] 백준 1037번: 약수 코드 num = int(input()) # N의 진짜 약수의 개수 A = list(map(int, input().split()))[:num] # N의 진짜 약수 N = min(A) * max(A) print(N) 풀이 입력받은 약수 중 최솟값과 최댓값을 곱하면 항상 그 값들의 최소공배수를 구할 수 있다. 2023. 5. 14.
[Python] 백준 1546번: 평균 코드 N = int(input()) scores = [] sum = 0 avg = 0 scores = list(map(int, input().split()))[:N] M = max(scores) # max in list for i in range(N): scores[i] = scores[i] / M * 100 sum += scores[i] avg = sum / N print(avg) 풀이 한 줄에 여러 개의 점수를 한꺼번에 입력받아야 하기 때문에 list를 사용하였고, int형으로 입력받고 싶기 때문에 map() 함수를 사용하였다. 입력받은 점수 중 최고점을 사용해야 하기 때문에 max() 함수를 이용해 최고점을 가져오고, 입력받은 점수의 개수대로 반복문을 돌려서 입력받은 모든 점수를 계산해주었다. 그 .. 2023. 5. 13.