목록Python (280)
jyamethyst21 님의 블로그
문제: 입력받은 값이 0~9 사이에 있는지 확인하고, 없는 수는 전부 더해서 출력하는 문제이다. 풀이:def solution(numbers): based_number = [0,1,2,3,4,5,6,7,8,9] total = 0 for i in based_number: if i not in numbers: total += i return total 0부터 9까지 들어있는 리스트를 선언하고 반복문을 돌면서 각 자리에 존재하는 숫자를 추출한다. 그 다음 함수로 전달받은 매개변수 리스트 값과 비교하여서 해당 수가 입력받은 리스트에 존재하지 않으면 total 변수에 해당 값을 더하고, 최종적으로 total을 리턴해주면 된다.
문제: N개의 수를 입력받고 해당 수를 오름차순으로 정렬하는 문제이다. 풀이:import sysinput = sys.stdin.readlineN = int(input())li = []for i in range(N): li.append(int(input()))new_li = sorted(li, reverse=False)print(*new_li, sep='\n')어제 푼 문제와 비슷하다. 마찬가지로 시간초과가 날 것 같아 처음 시도부터 sys 라이브러리를 import 하였다. N을 입력받고 해당 수만큼 반복문을 돈다. 그리고 N개만큼 숫자를 입력받아 미리 선언해놓은 li 리스트에 바로 추가하도록하고, 반복문이 끝나면 sorted 함수를 통해 오름차순으로 정렬한다. 이때 reverse 매개변수를 Fals..
문제: N개의 수를 입력받고 해당 수를 내림차순으로 정렬해서 출력하는 문제이다. 풀이:import sysinput = sys.stdin.readlineN = int(input())li = []for i in range(N): li.append(int(input()))new_li = sorted(li, reverse = True)print(*new_li, sep='\n')일반 정렬 문제라고 생각하면 된다. 다만, 시간 초과에 주의하여야 하는데 sys 라이브러리를 활용하지 않으면 시간 초과가 발생하므로 해당 라이브러리를 활용해서 간단하게 풀 수 있다.입력을 sys.stdin.readline을 이용해서 받도록 하고 li 리스트에 입력값을 저장한 뒤 sorted() 함수를 활용해서 내림차순으로 정렬한 다음..
문제: a, b의 값이 주어질 때 두 수 사이의 값을 전부 더해서 출력하는 문제이다. 이때 a, b의 값도 포함하여야 한다.또한, 만약 두 값이 동일한 수라면 둘 중 아무 수나 출력하면 된다. 풀이:def solution(a, b): total = 0 start = min(a, b) end = max(a, b) for i in range(start, end + 1): total += i return totalsolution(3,5)두 수 사이의 값을 더해서 저장할 변수 total을 선언하고, start와 end 변수에 두 값의 작은 값, 큰 값을 넣는다.반복문을 사용해서 두 수 사이의 값을 더할건데, 이때 작은 값~큰 값 범위로 지정해야..
문제: 자연수 N이 주어지면, 각 자릿수의 합을 구해서 값을 돌려주는 함수를 만드는 문제이다.예를 들어 N=123이라면 각 자릿수인 1,2,3을 더한 6이 출력되면 된다. 풀이:def solution(n): new_n = str(n) result = 0 for i in new_n: result += int(i) return resultsolution(123) 간단한 문제이다. 함수 형태이므로 상기와 같이 작성하였다.입력 자체는 int 형태이므로 이를 str 형태로 바꾸어서 한 글자씩 반복할 수 있도록 하고, 반복문을 통해 정수형으로 바꾼 뒤 result라는 변수에 더하였다.그 다음 해당 변수를 리턴해주면 문제를 풀 수 있다.
문제: 5원과 2원이 무한정으로 있을 때, 동전을 최소화해서 거스름돈을 주어야 한다. 이때 지급한 동전의 총 개수를 구하는 문제이다. 풀이:N = int(input())count = 0while N >= 0: if N % 5 == 0: count += N // 5 print(count) break N -= 2 count += 1else: print(-1)N에 지급해야할 거스름돈을 입력받고, 총 개수를 셀 count 변수를 초기화한다.이후 N이 0 이상일 경우만 반복문을 돌도록 조건을 설정하고 만약 5로 나눠 떨어진다면 5로 나눈 몫을 바로 count에 넣어서 출력하고 반복문을 탈출한다. 5로 나눠 떨어진다는 의미는 예를 들어 15만큼 거스름돈을 ..
문제: 문자열을 입력받고 해당 문자열에 'CAMBRIDGE'에 해당하는 알파벳이 한 개라도 있으면 그 알파벳을 제외하고 출력하는 문제이다. 풀이:sen = input()cam = 'CAMBRIDGE'for i in cam: if i in sen: sen = sen.replace(i, "")print(sen)sen에 문자열을 입력받고 cam에 정답 문자열인 CAMBRIDGE를 넣어놓는다.그 후 정답 문자열을 반복문을 통해 한 글자씩 추출해서 해당 글자가 입력받은 문자열인 sen에 포함되는지 검사하고 만약 포함이 된다면, replace 함수를 활용해서 해당 단어를 제외한다.replace 함수는 'replace(변경하고자 하는 부분, 바뀔 내용)' 형태로, 변경하고자 하는 부분이 해당 문제에..
문제: 테스트 케이스 수를 입력받고 해당 케이스별로 오타의 위치와 문자열을 입력받는다. 그 다음 오타의 위치에 해당하는 내용을 지우고 다시 수정된 문자열을 출력하면 된다. 풀이:N = int(input())for i in range(N): conn1, conn2 = map(str, input().split()) print(conn2[:int(conn1)-1]+conn2[int(conn1):])N에 테스트 케이스 개수를 입력받고, 해당 수만큼 반복문을 돈다. 그 다음 conn1에는 문자를 지울 위치, conn2에는 문자열을 입력받아서 저장한다. 해당 문제는 슬라이싱을 활용해서 바로 출력하면 되는데, 입력받은 conn1은 1을 시작으로 위치를 입력받는 것이지만, 원래 파이썬 인덱스는 0부터 시작이..
문제: 테스트 케이스의 개수와 테스트 케이스별로 수 N개를 입력받고, 각 테스트 케이스마다 입력받은 수를 더해서 출력하는 문제이다. 풀이:N = int(input())for i in range(N): score = sum(map(int,input().split())) print(score)테스트 케이스의 개수인 N을 입력받고 반복문을 해당 수만큼 돈다.반복문을 돌면서 score에 각 테스트 케이스별 수를 띄어쓰기를 기준으로 전부 입력받은 뒤 더해서 저장하고 이 변수를 바로 출력하면 문제에서 요구하는 것을 충족할 수 있게 된다.
문제: A, B의 점수가 라운드별로 주어질 때 각각의 승리 횟수를 기록한 뒤, 최종적으로 모든 라운드가 끝난 다음 몇 번씩 이겼는지 그 횟수를 출력하는 문제이다. 풀이:import sysinput = sys.stdin.readlineround = int(input())a_score, b_score = 0, 0for i in range(round): a_round_score, b_round_score = map(int,input().split()) if a_round_score > b_round_score: a_score += 1 elif a_round_score 라운드 수를 입력받고 해당 라운드별로 A, B의 점수를 입력받는다.그 다음 각 점수를 입력받자마자 어느 쪽의 점수가..
