본문 바로가기

Python(알고리즘,문제풀이)/BOJ(Bronze II)

백준 / 1440번 / 타임머신 / Python / 브루트포스 알고리즘

728x90

📚문제

출처 : 백준 1440번(https://www.acmicpc.net/problem/1440)


📝풀이

# 내 풀이 - 오답
# 1440번 타임머신
time = list(map(int,input().split(':')))
h = 0 

for i in time:
    if 0 < i < 13:
         h += 1
print(h*2)

 

쉽게 풀 수 있을 것 같아서 

조금 고민하다가 풀어봤는데 

오답이 나온다

 

예제도 다 맞고 반례도 딱히 없는 것 같은데 흠

 

+백준 게시판에 반례 질문 올렸더니 

한 분이 친절하게 답을 달아주셨다

문제에서 D의 범위가 0-9까지라고 하긴했지만

분과 초가 0-59까지라고 명시해줬으니

그 이상의 숫자들이 들어오진 않을거라고

무의식중에 생각해서 틀렸다

문제를 꼼꼼히 보고 잘 확인하자..

 

그래도 덕분에 조금 수정하여 내 방식대로 풀 수 있었다😀

# 1440번 타임머신
time = list(map(int,input().split(':')))
h = 0
x = 0
for i in time:
    if 0 < i < 13:
        h += 1
    if 59 < i <100:
        x -= 1
print(0 if x<0 else h*2)

 

 

 

 

 

 

✒️ 다른 풀이 방식

# 1440번 타임머신
time = list(map(int,input().split(':')))
hour = [h for h in range(1,13)]
sec = [s for s in range(60)]

cnt = 0 
for i in range(3):
    for j in range(3):
        for k in range(3):
            if i != j and j != k and i != k : # 시,분,초가 각각 다른 경우만 포함
                if time[i] in hour and time[j] in sec and time[k] in sec:
                    cnt += 1
print(cnt)

3중 for문을 활용해서

time 리스트에서 시/분/초 가 모든 다른 경우에

시 가 hour 안에 있고

분/초가 sec안에 있는 경우에 cnt +1하여 시간 세는 경우에 추가

 

728x90