TIL | 백준(2884, 2525, 2480)

vel.Ash·2022년 6월 4일
0
post-thumbnail

알람시계(2884)

문제
https://www.acmicpc.net/problem/2884

<내 풀이>
1.min이 45 이상인 경우 hr에는 영향이 가지 않음 → 그대로 -45
2.min이 45 미만인 경우 min 재계산 하도록 → hr가 0인 경우와 0이 아닌 경우로 나뉨 → -1 은 무조건 해줘야 하고 hr==0인경우 24로 변수 재지정한후 -1하도록 정해줌

hr, min = map(int,(input().split()))

if min >= 45:
    min -= 45
elif min < 45:
    rest = 45 - min
    min = 60 - rest
    if hr == 0:
        hr = 24
    hr -= 1

print(hr, min)
23 40 # 입력 
22 55 # 출력 

🙆🏻‍♀️ comment
더 간단명료한 코드들!
1.

H, M = map(int, input().split())

if M < 45 :	# 분단위가 45분보다 작을 때 
    if H == 0 :	# 0 시이면
        H = 23
        M += 60
    else :	# 0시가 아니면 (0시보다 크면)
        H -= 1	
        M += 60
        
print(H, M-45)
H,M = map(int,input().split())
if M > 44:
    print(H, M-45)
elif M<45 and H>0:
    print(H-1,M+15)
else:
    print(23,M+15)

오븐시계(2525)

문제
https://www.acmicpc.net/problem/2525

<생각>
1.시간과 분 따로 생각한 뒤, 시간 먼저 반영(내 코드에서는 min변수 재지정하기때문에 시간 먼저 반영)
2.분 반영
3.시간 정리( 24시간 이상일 경우 바꿔주기, 본 문제에서는 24시 → 00시로 표시중)

hr, min = map(int, input().split())
cook_time = int(input())

# 시간의 변화값 더하여 반영
hr_c = (min + cook_time) // 60
hr += hr_c

# 분 반영
min += cook_time
min = (min % 60)

# 시간 정리
if hr >= 24:
    hr -= 24

print(hr, min)
23 48 # 입력 
25 # 입력 
0 13 # 출력 

🙆🏻‍♀️ comment
→ 굳이 if 문 안쓰고도 hr 값 정리 가능
→ cook_time이 1000시간에 제한되어있어 넉넉하게 잡긴했지만 그 이상의 값이 들어가도 프로그램 돌아가도록 아래방법 참고하는 것도 좋을듯 !

# 시간 정리하기
hr = (hr + (min + cook_time)//60)%24

주사위 세개 (2480)

문제
https://www.acmicpc.net/problem/2480

a, b, c = map(int, input().split())
abc = [a, b, c]

if a == b == c:
    # 같은 눈 3개 나오면 10,000원 + 같은눈 * 1,000
    print(10000+(a * 1000))
elif a == b != c or a == c != b:
    # 같은 눈 2개 나오면 1,000원 + 같은눈 * 100
    print(1000+(a * 100))
elif b == c != a:
    print(1000+(b * 100))
else:
    # 모두 다른 눈  -> 그 중 가장 큰 눈 * 100
    print(max(abc) * 100)
6 2 5 # 입력
600 # 출력 

🙆🏻‍♀️ comment
-사실 같은 값이 2개 나오는 조건문에서 여러 줄으로 나눠쓰고 싶지 않아서 여러 방법을 생각하고 찾아봤는데, for이나 count 쓰는 방법 밖에 생각나지 않아서 위와 같이 풀이함.
→’솜씨좋은 장씨’님의 풀이 https://somjang.tistory.com/entry/BaekJoon-2480번-주사위-세개-Python 참고하고 배웠다!!

⭐ 중복을 제거해서 len으로 조건식 세워주는 방법도 있음~!!

set ()

-python 내장 함수
-집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형(리스트, 문자열)으로
1. 중복을 허용하지 않는다.
2. 순서가 없다 → 인덱싱으로 값을 얻을 수 없다.(인덱싱으로 접근하려면 리스트 or 튜플로 변환해야 한다.)

s = set([3, 2, 3, 4, 1, 1, 2, 4, 3])
print(s)

s2 = set('hello')
print(s2)

# 리스트로 변환하기
li = list(s)
print(li)
print(li[0])
{1, 2, 3, 4}
{'e', 'o', 'l', 'h'} # 값 순서 랜덤하게 바뀜
[1, 2, 3, 4] # 리스트로 변환
1 # 인덱싱 사용 가능 


백준 단계별 문제 2단계까지 완료! 꾸준히 계속 풀어나가기! 🥳

profile
코린이의 개발공부

0개의 댓글