안녕하세요. 지난 포스팅의 BOJ 2292번 : 벌집에서는 계차수열을 활용해서 문제를 풀어보았습니다. 오늘도 역시 수열과 관련된 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 그룹 수열(Group Sequence) 제출 코드 X = int(input()) G = 1 while (G * (G - 1)) // 2 < X : G += 1 G = G - 1 N = X - (G * (G - 1)) // 2 if G % 2 == 0 : print(str(N) + '/' + str(G - N + 1)) else : print(str(G - N + 1) + '/' + str(N)) 해설 사실 이 문제는 그룹 수열 자체를 이..
안녕하세요. 지난 포스팅의 BOJ 1712번 - 손익분기점에서는 math 라이브러리를 이용해서 수학 문제를 풀어보았습니다. 오늘은 수열과 관련된 문제를 풀어보도록 하죠. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 계차수열(progression of differences) 제출 코드 N = int(input()) if N == 1 : print(1) else : k = 1 while True : if 3*k**2 - 3*k + 2 = N : print(k + 1) break k += 1 해설 이 문제의 핵심은 계차수열임을 빠르게 파악하는 것입니다. $N$의 범위에 따라서 결과는 일정하다는 것을 관찰할 수 있죠. $$\begin{align..
안녕하세요. 지난 포스팅의 BOJ 1316번 : 그룹 단어 체커에서는 이중조건문을 이용해서 문자열과 관련된 문제를 풀어보았습니다. 오늘은 주제를 바꾸어서 수학적인 문제를 구현해보는 시간을 가져보도록 하죠. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 math 라이브러리 제출 코드 import math A, B, C = map(int, input().split()) if B >= C : print(-1) else : print(math.floor(A / (C - B) + 1)) 해설 일단, 이 문제는 3개의 입력을 받게 됩니다. 각각 고정비용 $A$, 가변비용 $B$, 상품비용 $C$ 입니다. 그리고 $x$를 판매한 상품의 개수라고 하겠습..
안녕하세요. 지난 포스팅의 BOJ 2941번 : 크로아티아 알파벳에서는 replace 함수를 이용해서 크로아티아 알파벳을 단순한 문자로 치환한 뒤 문자열의 길이를 계산하는 방법을 적용해보았습니다. 오늘은 살짝 조건문이 까다로운 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 문자열 자료형 제출 코드 cnt = 0 for _ in range(int(input())) : S = input() alpha = [0] * 27 for idx, s in enumerate(S) : if alpha[ord(s) - 97] == 0 : alpha[ord(s) - 97] += 1 else : if S[idx - 1] == s :..
안녕하세요. 지난 포스팅의 BOJ 5622번 : 다이얼에서는 문자 자체를 비교함으로써 해당 조건에 맞는 문제를 풀어보았습니다. 오늘은 문자열을 대치시키는 replace(old, new) 함수를 활용해서 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 문자열 자료형 replace 함수 제출 코드 cro = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] S = input() for c in cro : S = S.replace(c, '?') print(len(S)) 해설 이 문제는 접근하기에 따라서 어려워질수도 있고 쉬울수도 있는 문제입니다. 당장 이 문제를 보고 입력된 문..
안녕하세요. 지난 포스팅의 BOJ 2908번 : 상수에서는 슬라이싱을 이용한 문자열 뒤집기 방법을 이용해서 문제를 풀어보았습니다. 오늘도 역시 문자열과 관련된 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 문자열 자료형 제출 코드 S = input() T = 0 for s in S : if s < "D" : T += 3 elif s < "G" : T += 4 elif s < "J" : T += 5 elif s < "M" : T += 6 elif s < "P" : T += 7 elif s < "T" : T += 8 elif s < "W" : T += 9 else : T += 10 print(T) 해설 문제는 단..
안녕하세요. 지난 포스팅의 BOJ 1152번 : 단어의 개수에서는 split 함수와 len 함수를 이용해서 간단하게 문제를 풀어보았습니다. 오늘도 문자열과 관련된 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 문자열 자료형 reversed 함수 제출 코드 A, B = input().split() print(int(A[::-1]) if int(A[::-1]) > int(B[::-1]) else int(B[::-1])) 해설 이 문제는 먼저 2개의 숫자를 공백을 기준으로 입력받기 때문에 map(int, input().split()) 를 이용할 수도 있지만 결국에 중간에 문자열을 뒤집어야하기 때문에 굳이 정수형으로..
안녕하세요. 지난 포스팅의 BOJ 1157번 : 단어 공부에서는 문자열 내장 함수들을 이용해서 문제를 풀어보았습니다. 오늘도 역시 문자열과 관련된 문제를 풀어보도록 하겠습니다. 완벽한 코딩은 존재하지 않습니다. 제가 제출한 코드 역시 마찬가지고 그저 참고만 해주시길 바랍니다. 핵심 포인트 문자열 자료형 len 함수 제출 코드 print(len(input().split())) 해설 문제의 입력은 임의의 단어 개수를 자닌 문자열이 입력됩니다. 이때, 출력은 해당 문자열에 포함된 단어의 개수를 출력해주어야합니다. 저희는 여기서 문자열 내장함수인 split 함수와 리스트 함수인 len 함수를 함께 적용할 수 있습니다. split() 함수를 통해 입력된 문자열을 공백을 기준으로 분리한 리스트를 만든 뒤 리스트 안..