백준 29

백준 8393 합 파이썬

1. 문제 n이 주어졌을 때, 1부터 n까지의 합을 구해라. 2. 풀이 1) for문으로 누적합이 되도록 풀었다. 2) n까지의 합은 1 + n을 n번 곱한 것의 절반이라고 생각할 수 있다. N = int(input()) sum = 0 for num in range(N): x = num + 1 sum += x print(sum) 1) 정수 N을 받고, 누적할 변수 sum에 0으로 선언한다. 1부터 N을 더할 것이기 때문에 N번 반복한다. 처음 num에는 0이 들어가고 0 + 1 이 x에 담긴다. sum += x는 sum = sum + x라는 의미이므로, sum에는 0 + 1 이 담긴다. 그 다음 num은 1이 되고 1+1이 x에 담긴다. sum에는 1 + 2 가 담긴다. 이런 식으로 N번 반복된다. N ..

백준 2022.02.16

백준 10950 a + b (3번째) 파이썬

1. 문제 두 정수 A, B를 입력 받은 다음 A + B를 출력하시오. 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 그리고 나서 계산할 두 수가 T번 주어진다. 2. 출제의도 파악하기 for문을 쓰면서 서로 다른 두 수를 연산할 수 있겠니? 3. 풀이 1) 문제의 의도 대로 for문으로 풀어봄 2) exec() 활용 → 3.1 백준 2739 구구단에서 본 남의 버전으로 풀어봄 T = int(input()) for n in range(N): a, b=map(int,input().split()) print(a+b) 1) T, a, b는 문자열로 된 수를 입력 받기 때문에 int로 변환해주어야 한다. 그리고 입력 받은 두 수는 공백을 기준으로 나눌 수 있기 때문에 split()을 활용한다. a, b에는 앞..

백준 2022.02.15

백준 2739 구구단 파이썬

1. 문제 N을 입력 받아 구구단 N단 출력하기 2. 출제의도 파악하기 for문 좀 쓸줄 아나? 3. 풀이 for문의 기본 구조를 잘 알고 있는 지 물어보는 문제. 반복문의 기본 문제 중의 기본 문제 for 변수 in 리스트(or 튜플, 문자열): 수행할 문장1 수행할 문장2 여러 형태의 문자열 출력을 시도해봄. N = int(input()) for n in range(1, 10): print(N, '*', n, '=', N * n) N = int(input()) for n in range(1, 10): print(f'{N} * {n} = {N*n}') N = int(input()) for n in range(1, 10): print('{0} * {1} = {2}'.format(N, n, N*n)) 4...

백준 2022.02.14

백준 2884 알람 시계 파이썬

1. 문제 45분 일찍 울리는 알람 설정하기 2. 출제의도 파악하기 if문을 활용해봐랑 3. 풀이 (쏭 생각) 1) 분 입력이 45분 보다 작을 때, 2) 시 입력이 0일때를 먼저 생각했다. 1)일 때는 2) -1로 시간을 변경하고, 분 + 15을 한다. 분이 45보다 크거나 같을 때 그리고 시가 0보다 크면, 분에서 45만 빼준다. hour, minute = map(int, input().split()) if minute < 45: minute = minute + 15 hour = hour - 1 if hour < 0: hour = 23 print(hour, minute) else: minute = minute - 45 print(hour, minute) 4. 남의 버전 분석 시간인 24시간, 분은 6..

백준 2022.02.13

백준 2753 윤년 파이썬

1. 문제 윤년이면 1, 아니면 0 출력하기 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 2. 출제의도 파악하기 여러 조건을 충족하는 코드를 짜볼테냐? 3. 풀이 일단 지난 번의 숏코딩 형태로 풀어보았다. year = int(input()) print('01'[(year%4 == 0) & (year % 100 != 0) | (year%400 == 0)]) 대괄호 안의 조건이 참이면 1이고, 거짓이면 0이 되어 인덱스 역할을 할 수 있다. if문 활용: 문제 지문 그대로 조건을 적용해주었다. year = int(input()) if (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0): print(1) else:..

백준 2022.02.11

백준 9498 시험 성적 파이썬

1. 문제 시험 점수를 입력받아 90~100점은 A, 80~89점은 B, 70~79점은 C, 60~69점은 D, 나머지 점수는 F출력하기 2. 출제의도 파악하기 if문 써서 여러 조건 가능? 3. 풀이 elif로 다양한 조건을 판단할 수 있다. score = int(input()) if score >= 90: print('A') elif score >= 80: print('B') elif score >= 70: print('C') elif score >= 60: print('D') else: print('F') 4. 남의 버전 분석 (숏코딩) 1330 두수 비교하기와 같은 코드였음. # 숏코딩 print('FFFFFFDCBAA'[int(input())//10]) 입력 받은 수에 10으로 나눈 몫을 인덱스..

백준 2022.02.10

백준 1330 두 수 비교하기 파이썬

1. 문제 두 수 비교하기 → 대소비교 2. 출제의도 파악하기 if문을 활용하도록! 3. 풀이 경우1 두 수를 빼고 그 결과를 가지고 대소비교 가능 경우2 두 수 자체를 부등호 이용해 비교 가능 경우1 두 수를 뺐을 때의 결과가 양수이면 앞의 수가 크고, 음수이면 뒤의 수가 크고, 결과가 0이면 두 수의 절대값이 같다는 개념으로 풀었다. x, y = map(int, input().split()) result = x - y if result > 0: print('>') elif result b else ('

백준 2022.02.09

백준 2588 곱셈

1. 문제 세 자리수 × 세 자리수의 과정을 출력한다. 2. 출제의도 파악하기 2번째로 입력 받은 수를 백의 자리, 십의 자리, 일의 자리로 구분해서 연산 가능? 3. 풀이 1. 입력 받은 두 수 중 첫 번째로 입력받은 수를 정수형으로 바꿔준다. 2. 두 번째로 받은 수는 문자열이므로, 인덱스를 활용해 첫 번째 입력 받은 수와 연산한다. 3. 두 수의 곱을 위해 두 번째 숫자를 정수형으로 바꿔준다. 4. 출력 형식은 줄바꿈으로 표현한다. a = int(input()) b = input() print(a * int(b[-1]), a * int(b[-2]), a * int(b[0]), a * int(b), sep='\n') 4. 남의 버전 분석 몫과 나머지 연산을 통해 각 자리 수 계산을 해줌 a = int..

백준 2022.02.08

백준 10430 나머지 파이썬

1. 문제 세 수가 주어졌을 때 4가지 값 구하기 (A+B)%C, ((A%C) + (B%C))%C, (A×B)%C, ((A%C) × (B%C))%C 2. 출제의도 파악하기 나머지 계산할 줄 아니? 3. 풀이 1.9 백준 10869 사칙연산에서 남의 버전 분석한 대로 하면 된다. sep = '\n' : 각 출력할 요소를 줄바꿈으로 표현하기 위함이다. a, b, c = map(int, input().split()) print((a + b)%c, ((a%c) + (b%c))%c, (a * b)%c, ((a%c)*(b%c))%c, sep='\n') 수학에서 곱셈은 분배 법칙이 적용되는데, 2번째 식과 마지막 식에서 공통된 부분을 뽑아 작성해보았다. a, b, c = map(int, input().split())..

백준 2022.02.07