목록Python (281)
jyamethyst21 님의 블로그
문제: 다섯자리인 수를 입력받았을 때 각 자릿수별로 전부 다섯제곱한 값을 더해서 출력하면 되는 문제이다.예를 들어 12345인 경우, 1에서 다섯제곱, 2에서 다섯제곱 ... 5에서 다섯제곱한 값을 전부 더해서 출력한다는 의미이다. 풀이:N = input()total = 0for i in N: total += int(i)**5print(total)이전에 포스팅한 글에서도 언급했다시피, 숫자는 iterable 즉, 반복 가능한 객체가 아니라서 각 자릿수별로 꺼내려면 /, %를 활용해야 한다. 하지만 문자열은 iterable한 객체이므로 각 자릿수별로 간단하게 꺼낼 수가 있다.그래서 필자는 처음부터 입력값을 숫자가 아닌 문자열 형태로 입력받았고, 총 합계를 계산할 변수인 total을 초기화하였다.그 후..
문제: 이 문제는 참가자들에게 나눠줄 티셔츠와 펜을 최소/최대로 주문하는 방법을 구하는 것이다. 참가자의 수와 사이즈별 신청자 수, 티셔츠와 펜의 묶음 수를 입력받고, 티셔츠를 몇 묶음 주문해야하는지와 펜을 최대 몇 묶음 주문/한 자루씩 몇개 주문하는지를 출력하면 된다. 즉, 예제 입력을 기준으로 보면 23명의 참가자가 있고 사이즈별 필요한 인원이 위와 같을 때, 티셔츠는 5묶음씩 주문한다고 치면S: 1묶음(3개 필요한데 1묶음에 5장이니까)M: 1묶음(1개 필요한데 1묶음에 5장이니까)..XXXL: 2묶음(9개 필요한데 1묶음당 5개니까 2묶음이 필요)이런식으로 계산해서 총 7묶음이 필요하고, 펜은 7개에 1묶음이므로 전체 인원 수인 23%7=2로 총 3묶음과 낱개로 2개만 구매하면 된다는 의미이다. ..
문제: N개의 수업 중 M개 이상 수업을 들은 학생이 몇명인지 출력하는 문제이다. 풀이:N, M = map(int,input().split())student = {}for i in range(N): k = int(input()) student_number = map(int,input().split()) for j in student_number: student[j] = student.get(j, 0) + 1count = 0for q in student.values(): if q >= M: count += 1print(count)다른 부분에서 추가로 설명할 건 없을 거 같고, get 함수만 보면 될 거 같다.get 함수는 에러를 방지하기 위해서 첫번째 파라미터..
문제: 출석 도장과 물건의 가격이 주어질 때, 할인이 적용된 후 지불할 금액을 출력하는 문제이다.이때 출력값은 음수가 되지 않아야한다는 점을 유의해야 한다.(할인 금액이 물건의 가격보다 더 큰 경우 0원 출력) 풀이:n = int(input())p = int(input())prices = [p]if n >= 5: prices.append(p - 500)if n >= 10: prices.append(p * 90 // 100)if n >= 15: prices.append(p - 2000)if n >= 20: prices.append(p * 75 // 100)print(max(0, min(prices)))n, p에 각각 값을 입력받고 prices 리스트를 선언한다. 해당 리스트에 지불할 ..
문제: N을 입력받고 해당 수만큼 용의자 이름을 입력 받는다.그 후 이름에 S가 들어간 용의자를 찾아서 그 이름을 바로 출력하면 된다. 풀이:N = int(input())for i in range(N): name = input() if 'S' in name: print(name)N에 입력받을 횟수를 받고, 반복문을 돈다.이후 name에 용의자를 입력받은 뒤 만약 S가 있다면 바로 출력하도록 한다.문제에서는 용의자가 유일하게 존재한다고 되어있기 때문에 이렇게만 작성해도 통과할 수 있다.
문제: 타법에서 나올 수 있는 문자열을 기준으로 입력이 주어졌을 때 해당하는 타법을 출력하면 되는 문제이다. 풀이:N = input()if N == 'fdsajkl;' or N == 'jkl;fdsa': print('in-out')elif N == 'asdf;lkj' or N ==';lkjasdf': print('out-in')elif N == 'asdfjkl;': print('stairs')elif N == ';lkjfdsa': print('reverse')else: print('molu')N에 문자열을 입력받고 타법표를 기준으로 해당하는 타법을 출력하면 된다.단순히 그대로 옮기면 되는 문제라 더 설명할 건 없다.if ~elif 문을 활용하면 된다.
문제: 입력받을 문장의 수인 N을 입력받고, 해당 수만큼 문장을 입력받은 뒤 줄 번호를 추가해서 출력하면 되는 문제이다. 풀이:N = int(input())for i in range(1, N+1): a = input() print(f'{i}. {a}')N에 입력받을 문장의 수만큼 저장하고, 해당 수만큼 반복문을 돈다.필자의 같은 경우 0~N-1이 아닌 1부터 N+1까지 반복문을 돌도록 하였다. 횟수는 동일하지만 인덱스를 붙일 때 print에서 +1을 하지 않기 위해서 반복문 범위 지정 시 +1을 적용하였다.(어떻게 해도 무방함)그리고 a에 문장을 입력받고 포맷 스트링(f)을 활용해서 곧바로 출력하도록 하였다. 앞서 말한 것처럼 인덱스를 활용해서 바로 출력하기 위해 i를 1부터 N까지 반복하도록..
문제: 정수가 주어질 때, 해당 정수만큼 369 게임을 하고 이때 들을 수 있는 박수의 총 횟수를 출력하면 되는 문제이다.참고로 369 게임에서는 3,6,9가 들어간만큼 박수를 친다. 즉, 33이면 3이 두 개 있으니 박수를 두 번 쳐야한다.이를 참고해서 코드를 작성하면 된다. 풀이:N = int(input())count = 0for i in range(1, N+1): count += str(i).count('3') + str(i).count('6') + str(i).count('9')print(count) 입력받은 정수만큼 반복문을 돌고, 해당 수를 문자열 형태로 바꾼다. 그러면 각 자릿수를 확인할 수 있기 때문에 전체를 돌면서 3, 6, 9가 들어있는지 count 함수로 수를 센다.즉, i가 3..
문제: 해당 문제는 박스에 성냥을 넣었을 때 들어가는지 아닌지를 하나씩 검사해서 여부를 출력하는 문제이다. 필자는 처음 해당 문제를 보았을 때, 면적을 구해서 성냥이 들어가는지 아닌지만 확인하면 되는줄 알았다. 즉 1차원의 직사각형 모양에 성냥을 던졌을 때 들어가는냐를 보는줄 알았다.그러나 그것이 아니라 박스가 입체로 되어있다고 생각하고 거기에 성냥을 넣었을 때 잘 들어가는지를 보아야하는 문제였다.들어가면 DA를, 안 들어가면 NE를 출력하면 된다. 풀이:import mathN, W, H = map(int,input().split())for i in range(N): leng = int(input()) if leng 파이썬의 math 라이브러리를 import하면 루트를 씌우는 함수인 sqrt를..
문제: 학생 수와 학생들의 점수가 주어질 때 가장 큰 점수와 가장 작은 점수를 구해서 그 차이를 출력하면 된다. 풀이:N = int(input())student_score = list(map(int,input().split()))print(max(student_score)-min(student_score))N에 학생 수를 입력받고, student_score에 띄어쓰기를 기준으로 모든 학생의 점수를 입력받은 뒤 리스트에 저장한다.그리고 파이썬의 max, min 함수를 활용해서 가장 큰 값, 가장 작은 값을 구한 뒤 뺀 수를 바로 출력하면 된다.그럼 100점 나온다!
