본문 바로가기

전체 글

(231)
[백준 10809번 파이썬] 알파벳 찾기 이번 문제는 영어 문자열을 입력받고 출력할 때 해당 문자열에 없는 알파벳 위치에 -1을, 존재하는 알파벳에는 문자열에서의 n번째 순서임을 나타내면 되는 문제이다 참고로 문자열 순서를 세는 건 1이 아닌 0부터 시작한다 word = input() alphabet = list(range(97, 123)) for i in alphabet: print(word.find(chr(i))) 우선 한 변수에 97부터 123까지의 문자를 집어넣는다 위의 숫자는 a부터 z까지의 아스키코드이며 이는 또 for 문을 이용해 문제를 풀이할 수 있기 때문에 사용하는 방식이다 chr(변수)를 이용해 아스키코드를 다시 문자열로 바꿔주고, find를 이용해 입력받은 문자열의 순서를 코드가 알아서 출력할 수 있도록 한다 중요한 부분은 ..
[백준 11720번 파이썬] 숫자의 합 숫자의 개수와 실제 계산에 사용될 숫자를 입력받고 공백없이 입력되는 한자릿수의 숫자 문자열로 전체를 다 더한 값을 출력하는 문제이다 a = input() print(sum(map(int, input()))) a로 입력받을 숫자의 개수를 입력받지만 위 코테 문제에서는 개수와 실제 입력받은 숫자들의 개수를 굳이 검증할 필요가 없어 바로 프린트하는 부분으로 넘어간다 map으로 띄어쓰기없이 들어온 문자열을 정수형으로 바꾼 뒤 나누고, sum으로 나눠진 모든 정수들을 바로 다 더한다
[백준 11654번 파이썬] 아스키 코드 이번 문제는 입력받은 문자열의 아스키코드를 출력하는 간단한 문제이다 target = input() print(ord(target)) 위의 코드처럼 ord() 라는 함수를 사용하면 알아서 문자열의 아스키코드를 반환해준다 간단한 문제답게 정답도 매우 간단한데 이 문제처럼 어떤 입력값을 다른 형태로 변경해야하는 문제가 있다면 대부분 쉽게 값을 변형해주는 함수가 있기 때문에 검색해보는 것에 익숙해지는 것이 좋다
[백준 1065번 파이썬] 한수 여기에서 한수에 대한 개념을 잘 이해해야 문제를 쉽게 이해할 수 있다 숫자 사이의 차가 동일하게 이어지는 것을 등차수열이라고 하는데, 1 2 3 4 5 / 1 3 5 7 9 / 1 4 7 10 등과 같은 수열들이 그 예시로 존재한다 그러다 이 문제에서는 이 등차수열을 한 숫자의 자릿수 사이의 차에 적용하고 있다 456, 246, 789와 같은 백 단위의 숫자들을 보면 각 자릿수마다 등차수열의 특성을 가지고 있는 것을 볼 수 있다 이렇게 한 숫자 안에서 등차수열의 특성을 가지고 있는 숫자들을 '한수'라고 한다 num = int(input()) netural = set(range(1, num)) count = 0 for i in range(1, num+1): if 0 < i < 100: count += 1 ..
[백준 4673번 파이썬] 셀프 넘버 이 문제는 매우 복잡해 보이는데.. 실제로도 복잡하다 줄여서 말하자면 만약 11이라는 숫자가 있으면, 이에 대한 문제에 나와 있는 함수는 이 숫자를 가지고 11 + 1 + 1이라는 수식을 진행한다 [ 숫자 + 숫자의 십의 자릿수 + 숫자의 일의 자릿수 ] 숫자가 백의 자릿수, 천의 자릿수까지 있으면 그 숫자까지 더해주면 된다 또한 위 수식의 결과값을 통해 11은 13의 생성자라는 결론이 나오게 되는데, 우리가 이 문제에서 출력해내야 하는 값은 어떤 값의 생성자에도 속하지 않는 숫자들이다 즉, 우리가 출력해야 하는 숫자 중에 11은 존재하지 않는다는 것이다 netural = set(range(1,10001)) addnum = set() for i in range(1, 10001): for k in str(..
[백준 15596번 파이썬] 정수 N개의 합 이 문제는 다른 문제들과는 달리 예제가 없어서 문제를 정확하게 읽고 코드를 작성해야한다 우선 파이썬을 사용하고 있는 우리는 a에 합을 구해야 하는 정수 n개를 저장하고, a에 들어가 있는 정수 전부를 더한 결과값을 출력하는 함수를 작성하면 되는 문제이다. def solve(a): ans = sum(a) return ans def 함수명(변수): return 변수에 들어있는 정수들의 전체 합 의 형태만 지켜 작성한다면 쉽게 정답을 맞힐 수 있다
[백준 4344번 파이썬] 평균은 넘겠지 이번 문제는 처음으로 케이스 개수를 입력받고, 각 케이스마다 학생 수와 학생들이 받은 점수들을 입력받는다 그리고 평균값을 내고, 그 평균을 넘기는 학생의 수를 백분위 평균을 내서 출력하는 문제이다. num = int(input()) for i in range(num): a = list(map(int, input().split())) avg = sum(a[1:])/a[0] count = 0 for score in a[1:]: if score > avg: count += 1 print('%.3f' %((count/a[0])*100)+'%') 여기에서 중요한 것은 a[1:]/a[0] 부분이다 케이스를 입력받는 구조 상 첫번째 숫자는 학생 수고, 그 이후로는 학생들이 각자 받은 점수들이다 즉, sum(a[1:]..
[백준 8958번 파이썬] OX퀴즈 이번 문제는 복잡해 보이지만 이해하면 쉬운 문제인데 일단 첫 번째로는 입력할 수 있는 케이스의 개수를 정하고 O와 X 이루어지면 긴 문자열을 각각 받는다 이 문자열에서 O가 있으면 1 점을 추가로 얻고, X가 있으면 1점을 얻지 못하는데 이때 O가 연속으로 배열돼 있으면 추가로 얻을 1의 숫자가 하나씩 올라간다 num = int(input()) for i in range(num): a = str(input()) score = 0 get = 0 for k in list(a): if k == 'O': score += 1 get += score else: score = 0 print(get) 중첩된 for 문 안에서 score와 get의 숫자를 따로 올림으로써 문제의 내용을 구현할 수 있다