본문 바로가기

전체 글

(231)
[백준 1712번 파이썬] 손익분기점 이번 문제는 고정 비용, 가변 비용, 책정된 가격을 순서대로 입력받고 이 가격들을 이용해 손익분기점을 계산하면 된다. 여기에서 손익분기점은 고정 비용 + 물건 하나 당 붙는 가변 비용의 값을 넘기는 팔린 n 개의 물건 개수, 즉 n을 의미한다 A, B, C = map(int, input().split()) if B >= C: print("-1") else: print(A//(C-B)+1) 쉽게 이해해 보자면 고정 비용은 불변하지 않고, 추가되지 않는 비용이다 가변 비용은 한 대를 생산할 때마다 반복적으로 발생하는 비용이기 때문에 n개의 물건을 팔아 C*n 만큼의 수익이 난다고 해도 A + B*n 만큼의 돈이 생산 비용으로 빠져나감을 의미한다 즉, C가 B보다 작은 비용으로 책정된다면 몇 만 개의 물건을 ..
[백준 1316번 파이썬] 그룹 단어 체커 이번 문제는 쉽게 표현해서 입력받은 개수만큼의 문자열 중에서 반복되는 문자가 없거나, 혹은 있지만 떨어져 있지 않고 붙어 있는 문자열일 경우에만 '그룹 단어'라고 부르는데 이 그룹 단어의 개수를 출력하면 되는 것이다 num = int(input()) count = 0 for _ in range(num): word = input() error = 0 for i in range(len(word)-1): if word[i] != word[i+1]: new_word = word[i+1:] if new_word.count(word[i]) > 0: error += 1 if error == 0: count += 1 print(count) 정답 코드가 조금 복잡해 보이지만 word에 i 번째 문자와 i+1 번째 문자를..
[백준 2941번 파이썬] 크로아티아 알파벳 이번 문제는 입력받은 문자열을 사용자가 가지고 있는 변경 '표'에 의해 크로아티아 알파벳으로 변경했을 때 크로아티아 알파벳 상에서 몇 개의 문자로 구성된 문자열이었는지를 출력하기만 하면 된다 alpha = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] word = input() for i in alpha: word = word.replace(i, 'a') print(len(word)) 이전 문제처럼 문제 속에 주어진 문자열을 미리 리스트 형태로 저장하고 진행해야 한다 그리고 리스트 속에 있는 문자가 문자열에 있을 때마다 해당 문자를 replace 함수를 이용해 a로 변경해준다 그렇게 되면 크로아티아 알파벳이 존재할 때마다 a로 변경해주는 셈이기 때문에 마지막에는..
[백준 5622번 파이썬] 다이얼 다이얼 속에 있는 문자를 출력할 때 소요되는 시간을 출력하면 되는 문제이다 여기에서 다이얼 속에 있는 문자는 속해 있는 숫자의 +1 만큼의 초 시간이 소요된다 dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'] word = input() time = 0 for unit in dial: for i in unit: for k in word: if i == k: time += dial.index(unit) + 3 print(time) 다이얼 속 문자 같은 건 사진으로만 주어져 있기 때문에 실제로 코드 안에서 사용하려면 직접 리스트로 만들어 줘야 한다 1부터 9까지 위치에 (실제 위치는 0부터 계산하기 때문에 0~8이다) 해당하는 문자들을 차례대..
[백준 2908번 파이썬] 상수 이번 문제는 입력값으로 두 수가 들어오는데, 이 두 수를 각자 반대로 읽어 저장한 뒤 더 큰 수를 출력한다 즉, 376이 들어가면 673으로 저장하고, 912은 219로 저장한다. 들어왔을 때의 수와는 상관없이 리버스한 수로 최댓값을 구한다는 의미이다 A, B = input().split() A = int(A[::-1]) B = int(B[::-1]) if A > B: print(A) else: print(B) 문자열 옆에 붙는 [::-1]은 문자열 자체를 리버스해주는 내용으로 각각 자기 자신을 리버스한 뒤 if문으로 더 큰 값을 출력해주면 되는 간단한 코드이다
[백준 1152번 파이썬] 단어의 개수 이번 문제는 매우 간단하다 입력값으로 문자열이 들어오면 공백으로 구분된 단어가 몇 개인지만 출력해주면 되는 문제이다 print(len(input().split())) split() 함수를 사용해서 입력값들을 공백 기준으로 자르기만 해도 이를 len() 함수를 이용해 몇 개의 단어로 잘렸는지 쉽게 출력할 수 있다
[백준 1157번 파이썬] 단어 공부 이번 문제는 입력 받은 문자열 속에서 반복적으로 사용된 알파벳 중 가장 많이 사용된 문자를 대문자로 출력하면 된다 만약 한 문자열 안에서 가장 많이 사용된 문자가 여러개라면 ?를 출력해야 한다 word = input().upper() origin_word = list(set(word)) count_list = [] for i in origin_word: count = word.count(i) count_list.append(count) if count_list.count(max(count_list)) > 1: print('?') else: max_index = count_list.index(max(count_list)) print(origin_word[max_index]) 우선, upper 함수를 이용해..
[백준 2675번 파이썬] 문자열 반복 이번 문제는 케이스 횟수를 입력받고, 반복할 횟수와 반복할 문자열을 입력받으면 문자열의 각 문자를 반복 횟수 만큼 출력하도록 코드를 작성하면 되는 문제이다 chance = int(input()) for _ in range(chance): num, sentance = input().split() for k in sentance: print(k*int(num), end='') print() for 문에서 in 앞에 언더바(_)를 써주면 바뀌어야 하는 특정 변수가 없을 때 그저 range 안에 있는 범위 만큼만 for문 내용을 반복해준다 print 함수 안에서 end=''가 존재하는 이유는 해당 답의 출력값은 공백 없이 나타나야 되기 때문에 집어넣은 옵션이다