본문 바로가기

programming/algorithm

[ algorithm ] 백준 단계별 문제 풀이 (조건문)

[ algorithm ] 백준 단계별 문제 풀이 (조건문)

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 백준에서 조건문에 관련된 문제들의 풀이를 살펴보려 합니다.

 

파이썬3 를 사용해 문제 풀이를 진행하겠습니다.

 

문제마다 링크를 걸어두었으니 문제를 살펴보시고 문제를 푼 다음에 저와

 

풀이를 비교해 보시는 걸 추천드립니다.


차근차근 풀어봅시다.

 

algorithm
알고리즘



백준 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 ] 백준 단계별 문제 풀이 (입출력과 사칙연산)

 

오늘 살펴본 문제들도 무지막지하게 어려운 문제는 아니였습니다.

 

아직까지는 큰 어려움 없이 잘 풀어나가고 있지만 난이도가 올라갈수록 컴퓨터과학에 대한 개념이

 

필요한 문제들을 마주하게 될 것입니다.

 

제가 아는 지식을 총 동원해 천천히 설명해드릴테니 천천히 잘 따라와주세요.

 

문제를 풀다가 어려운 부분이 있거나 도움이 필요하시다면 댓글에 남겨주시면 답변해드리도록 하겠습니다.

 

새해 복 많이 받으세요. 감사합니다.

반응형