[ algorithm ] 백준 단계별 문제 풀이 (조건문)
안녕하세요. 심심한 코딩쟁이입니다.
오늘은 백준에서 조건문에 관련된 문제들의 풀이를 살펴보려 합니다.
파이썬3 를 사용해 문제 풀이를 진행하겠습니다.
문제마다 링크를 걸어두었으니 문제를 살펴보시고 문제를 푼 다음에 저와
풀이를 비교해 보시는 걸 추천드립니다.
차근차근 풀어봅시다.
백준 BAEKJOON 1330
https://www.acmicpc.net/problem/1330
1330번: 두 수 비교하기
두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.
www.acmicpc.net
문제 해석
주어진 두 수를 비교하는 문제
풀이
a, b = map(int, input().split())
if a > b:
print('>')
elif a < b:
print('<')
else:
print("==")
풀이 해석 및 팁
map 함수를 사용해 두 정수로 받아오고 if 조건문을 사용해 크기 비교 후 부등호를 출력
백준 BAEKJOON 9498
https://www.acmicpc.net/problem/9498
9498번: 시험 성적
시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제 해석
0에서 100까지의 정수를 입력받고 범위에 해당하는 점수를 출력하는 문제
풀이
score = int(input()) // 10
if score >= 9:
print('A')
elif score == 8:
print('B')
elif score == 7:
print('C')
elif score == 6:
print('D')
else:
print('F')
풀이 해석 및 팁
if 조건문에서 다중 조건을 검사하기위해 elif를 여러개 사용함
백준 BAEKJOON 2753
https://www.acmicpc.net/problem/2753
2753번: 윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서
www.acmicpc.net
문제 해석
윤년의 조건을 문제에서 알려주면 그 조건으로 입력받은 수가 윤년에 해당하는지를 검사하는 문제
풀이
a = int(input())
if ((a % 4 == 0) and (a % 100 != 0)) or (a % 400 == 0):
print('1')
else:
print('0')
풀이 해석 및 팁
and 와 or를 괄호( )로 잘 묶어서 사용
백준 BAEKJOON 14681
https://www.acmicpc.net/problem/14681
14681번: 사분면 고르기
점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
www.acmicpc.net
문제 해석
주어지는 좌표가 4사분면 중 어느곳에 속하는지를 판별하는 문제
풀이
x = int(input())
y = int(input())
if x > 0:
if y > 0:
print('1')
else:
print('4')
else:
if y > 0:
print('2')
else:
print('3')
풀이 해석 및 팁
x가 양수인지 음수인지를 먼저 판별한 뒤에 y의 좌표를 확인해 어느 사분면에 속하는지 판별
백준 BAEKJOON 2884
https://www.acmicpc.net/problem/2884
2884번: 알람 시계
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,
www.acmicpc.net
문제 해석
주어진 시간보다 45분 앞선 시간을 출력하는 문제
풀이
h, m = map(int, input().split())
if m >= 45 :
print("{} {}".format(h, m-45))
else :
if h != 0 :
print("{} {}".format(h-1, m+15))
else :
print("{} {}".format(23, m+15))
풀이 해석 및 팁
주어진 시간에서 분의 값이 45보다 클 경우 시간의 변화는 없기 때문에 바로 출력이 가능하지만
45보다 작을 경우에는 0시일 때와 그렇지 않을 때를 구분하여 시간을 정의해준다.
백준 BAEKJOON 2525
https://www.acmicpc.net/problem/2525
2525번: 오븐 시계
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
www.acmicpc.net
문제 해석
두 줄을 입력받는데 첫 줄에는 현재 시각, 다음줄에는 요리에 걸리는 시각이 입력된다.
요리가 완료되는 시각을 출력해야하기 때문에 현재 시각에 소요 시간을 더해주는 문제
풀이
a, b = map(int, input().split())
c = int(input())
a = a + c // 60
b = b + c % 60
if b >= 60:
b = b - 60
a = a + 1
if a >= 24:
a = a - 24
print("{} {}".format(a, b))
풀이 해석 및 팁
a에는 시간 b에는 분이 입력되는데 요리가 소요되는 시간은 분으로 들어오기때문에
c를 60으로 나눈 몫을 a에 더해주고 c를 60으로 나눈 나머지를 b에 더해주면 요리 완료 시각을 파악할 수 있다.
그 밑에 조건문은 b가 60분을 넘어갈 경우 시간값을 조정해주는 경우와 a가 24를 넘는 경우를 검사하고있다.
백준 BAEKJOON 2480
https://www.acmicpc.net/problem/2480
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
문제 해석
같은 눈이 3개 나오는 경우와 2개 나오는 경우 그리고 모두 다른 경우를 각각 구분해 상금을 계산하는 문제
풀이
a = input()
prize = 0
count1 = a.count(a[0])
if count1 == 3:
prize += 10000 + int(a[0])*1000
elif count1 == 2:
prize += 1000 + int(a[0])*100
else:
if a.count(a[2]) == 2:
prize += 1000 + int(a[2])*100
else:
prize += max(int(a[0]), int(a[2]), int(a[4])) * 100
print(prize)
풀이 해석 및 팁
a에 3개의 주사위 눈 값을 문자열로 받아오고 count함수를 사용해 같은 눈의 개수를 파악한다.
첫 번째 눈과 같은 개수가 3개 또는 2개 라면 상금 계산이 바로 가능하지만 1개일 경우에는
다른 두 눈의 값이 같은지를 확인한 뒤에 상금 계산을 진행합니다.
여기까지 백준 단계별 문제 중 조건문에 대한 문제 풀이였습니다.
저번시간에는 입출력과 사칙연산 관련 문제를 살펴보았습니다.
[ algorithm ] 백준 단계별 문제 풀이 (입출력과 사칙연산)
오늘 살펴본 문제들도 무지막지하게 어려운 문제는 아니였습니다.
아직까지는 큰 어려움 없이 잘 풀어나가고 있지만 난이도가 올라갈수록 컴퓨터과학에 대한 개념이
필요한 문제들을 마주하게 될 것입니다.
제가 아는 지식을 총 동원해 천천히 설명해드릴테니 천천히 잘 따라와주세요.
문제를 풀다가 어려운 부분이 있거나 도움이 필요하시다면 댓글에 남겨주시면 답변해드리도록 하겠습니다.
새해 복 많이 받으세요. 감사합니다.
'programming > algorithm' 카테고리의 다른 글
[ algorithm ] 백준 단계별 문제 풀이 (1차원 배열 1탄) (0) | 2023.02.14 |
---|---|
[ algorithm ] 백준 단계별 문제 풀이 (반복문 2탄) (0) | 2023.02.10 |
[ algorithm ] 백준 단계별 문제 풀이 (반복문 1탄) (0) | 2023.02.09 |
[ algorithm ] 백준 단계별 문제 풀이 (입출력과 사칙연산) (0) | 2023.01.21 |
[ algorithm ] 알고리즘 문제 풀이 사이트 (1) | 2023.01.04 |