백준 29

백준 2577 숫자의 개수 파이썬

1. 문제 세 개의 자연수가 주어질때 세 자연수의 곱한 결과 중 0~9까지 각각 몇번 쓰였는지 구해라 2. 출제의도 숫자와 문자를 자유롭게 변환 가능? 반복문 잘함? 3. 풀이 nums = [int(input()) for n in range(3)] mul_nums = list(str(nums[0] * nums[1] * nums[2])) result = [mul_nums.count(str(n)) for n in range(10)] # 1 print("\n".join(str(n) for n in result)) # 2 for n in result: print(n) nums 3번의 반복을 통해 입력 받고 입력 받은 문자를 int형으로 변환한다. 그리고 3개의 숫자를 리스트에 담는다. mul_nums 3개의 숫..

백준 2022.12.21

백준 2562 최댓값 파이썬

1. 문제 9개의 자연수가 주어질 때, 그중 최댓값을 찾고, 몇 번째의 값인지 구하여라. 2. 출제의도 배열 좀 다룰 줄 아니? 3. 풀이 # 1 nums = [*map(int, input().split())] print(max(nums), nums.index(max(nums))+1) # 2 nums = [int(input()) for n in range(9)] print(max(nums), nums.index(max(nums))+1, sep='\n') # 1 nums 인자 앞에 *을 붙여서 unpacking 한다. *을 빼고 실행하면 nums에 mapping된 채로 들어있는 것을 확인할 수 있다. print() 인덱스 번호가 아닌 몇 번째 수인지 확인하라고 했으므로 구한 인덱스에 1 더해줌 인덱스는 0..

백준 2022.12.14

백준 10818 최소, 최대 파이썬

1. 문제 N개의 정수가 주어짐. N개의 정수 중 최소값과 최대값은? 2. 출제의도 배열을 잘 다룰 줄 아는가? 3. 풀이 # 1 # 정수 몇개 주어지는지 n = int(input()) # n개의 정수가 공백으로 구분되어 주어짐 nums = list(map(int,input().split())) # 최대값 변수 선언 max_num = nums[0] # 최소값 변수 선언 min_num = nums[0] # 0번째를 변수 선언해주어서 1번째부터 비교할거임 for i in nums[1:]: # max_num에 있는 값보다 큰 경우 if i > max_num: max_num = i # min_num에 있는 값보다 작은 경우 elif i < min_num: min_num = i print(min_num, max_..

백준 2022.12.13

백준 1110 더하기 사이클 파이썬

1. 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때의 연산. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. 2. 출제의도 - 몫 구하는 연산자(//), 나머지 구하는 연산자(%) 좀 아니? 3. 풀이 # 주석 버전 # 입력된 숫자..

백준 2022.12.07

백준 10952 A+B 파이썬

1. 문제 두 정수 A, B를 입력 받고, A + B를 출력해라 2. 출제의도 조건에 따라 덧셈 가능? 조건) 0 < A, B < 10 조건) 0 두 개를 입력 받으면 반복문 종료 3. 풀이 문제에 풀이 과정이 나와있는 경우라고 본다. # 1. 두 수 입력 받기 a, b = map(int, input().split()) # 2. 0 < a, b < 10 인 경우에만 반복하고 싶다! while 0 < a and b < 10: # 3. 0 두개가 입력되면 반복문을 탈출할 수 있다. # 따라서 0 두개가 아니라면 무한 반복 if a != 0 and b != 0: # 4. 출력은 두 수의 합 print(a+b) # 5. 계속 숫자를 입력 받을 수 있도록 a, b = map(int, input().split())..

백준 2022.12.05

백준 10871 X보다 작은 수 파이썬

N, X = map(int, input().split()) A = list(map(int, input().split())) for i in range(N): if A[i] < X: print(A[i]) 1. 문제 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때 A에서 X보다 작은 수를 모두 풀력하는 프로그램을 작성하시오. 2. 출제의도파악 숫자를 입력 받고, 대소 비교할 줄 아니? 3. 풀이 - 몇개의 정수를 받을지(정수 N개)와 정수를 입력 받는다. - N개만큼 숫자를 입력 받는다. - for문을 통해 반복한다. = N번 반복한다. - N개만큼 들어있는 A(수열)에서 하나씩 꺼내 X와 비교한다. - A[i]

백준 2022.11.28

백준 2438 별 찍기 파이썬

1. 문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개 찍기 2. 출제의도 파악하기 반복문 좀 쓸줄 아니? 3. 풀이 N = int(input()) for n in range(N): print('*'*(n+1)) - 정수로 입력을 받는다. = N - 정수만큼 반복한다. - n에는 정수가 담긴다. - *을 n+1한 만큼 출력한다. +1 하는 이유 range(N)을 하게 되면 0번 부터 시작이다. 그러므로 첫번째 줄에 별 1개가 찍히려면 n+1은 1이 되어야 한다. 아래와 같이 할 수도 있다. N = int(input()) for n in range(1, N+1): print('*'*(n)) 4. 남의 버전 분석 - 리스트 컴프리헨션을 활용해 찍을 수도 있다. N = int(inpu..

백준 2022.11.18

백준 2741 N찍기 파이썬

1. 문제 - 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 2. 풀이 - 100,000 이하의 자연수를 입력 받도록 한다. - 1부터 입력 받은 숫자까지 출력을 반복한다. N = int(input()) for n in range(1, N+1): print(n) - N+1 이유 range함수에서 파라미터가 2개인 경우, 앞의 파라미터는 시작값이고, 뒤의 파라미터는 종료값이다. 이때 종료값의 직전 숫자까지 반복하므로 '+ 1'을 해줘야 종료값을 출력할 수 있게 된다. 3. 남의 버전 1) 당연하게도 코랩 등등 에선 오류남. import sys N = int(sys.stdin.readline()) for n in range(1, N+1): print(n) 2) 숏코..

백준 2022.10.27

백준 15552 빠른 A + B 파이썬

1. 문제 input() 대신 sys.stdin.readline를 쓰자. (이유) input()은 시간초과가 발생할 수 있다. 2. 풀이 sys 모듈 사용 import sys T = int(sys.stdin.readline()) for i in range(T): a, b = map(int, sys.stdin.readline().split()) print(a+b) input() 대신 sys.stdin.readline()을 넣어주면 된다. sys.stdin.readline()를 쓰기 위해 sys 모듈을 불러온다. 단, 코랩이나 주피터노트북에서 sys.stdin.readline()가 동작하지 않는다. 검색해보니 스파이더도 안되는 듯 하다. 그러나 백준에선 '맞았습니다!!'라는 결과를 얻을 수 있다. 3. 남의..

백준 2022.02.17