ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 백준 : 조건문 모음집 (두 수 비교하기 이후부터)
    코딩테스트/백준 2024. 1. 27. 15:51

    # 9498 :시험성적

    [문제 풀기 전 생각한 부분]

    1. 백준 문제번호1,330 코드 조금만 변경하면 되겠다.

    https://studyiwthme.tistory.com/8
    [my_code]

     res = int(input())   
    if 90<=res<=100:
        print("A")
    elif 80<=res<=89:
        print("B")
    elif 70<=res<=79:
        print("C")
    elif 60<=res<=69:
        print("D")
    else:
        print("F")


    [문제점]

    1. Line 2 에서 if 90<=res 만 쓰면 더 간결해질거 같다. 90점 이상~ 되니깐
    [문제점 해결]

    none

    # 2753 : 윤년

    [문제 풀기 전 생각한 부분]

    1. 윤년은 4의 배수이면서,100의 배수가 아닐 때 또는 400의 배수일 때를 잘 작성하면 되겠군.

     

    [my_code]

    year = int(input())
    if (year%4 == 0 and(year%100 !=0 or year&400 == 0)):   # 4의 배수이면서 100의배수가 아닐때 또는 400의 배수일 때
        print("1")
    else:
        print("0")


    [문제점]

    1. 위 코드처럼 하니 2,000을 입력했을 때 또한 0이 출력되었다.

    2. 4의 배수이면서 and (100의 배수가 아닐때 or 400의 배수)일때로 수정이 필요하다.

    3. [질문] 2000은 4의 배수이면서 100의 배수이면서 400의 배수이다. 근데 왜 가능한지 이해가 안된다. 

    [문제점 해결]

    (4의 배수이면서 100의 배수가 아닐때) or 400의 배수일때로 수정이 필요하다.

    year = int(input())
    
    if ((year%4 == 0)and(year%100 != 0)) or (year%400 == 0):
        print('1')
    else:
        print('0')

     

    [참고사항]

    !== (x)  / != (o)

    # 14,681 :사분면 고르기 

    [문제 풀기 전 생각한 부분]

    1. x,y 입력 받고 4가지로 경우를 나누면 되겠다.

    [my_code]

    # x,y 입력을 받는다.
    x= int(input())
    y= int(input())
    
    if x>0 and y>0:    # 1사분면
        print('1')
    elif x<0 and y>0:  # 2사분면
        print('2')
    elif x<0 and y<0:  # 3사분면
        print('3')
    else:              # 4사분면
        print('4')


    [문제점]

    1. 사용자로부터 입력을 받을 때, 항상 a,b = map(int, input().split())을 하다 보니 각각 따로 입력을 어떻게 받지 생각함.
    [문제점 해결]

    1. my_code의 내용처럼 받으면 된다. 

    # 2,884 :알람 시계

    [문제 풀기 전 생각한 부분]

    1. 액셀처럼 여기는 시간함수 뭐 이런거 없나?

    2. 1번 같은 함수를 모르니 직접 계산으로 때려보자

    3. 현재 10시 10분 이라고 가정하자. 현재로부터 45분 전은 9시25분이다.

    10분에서 45분을 뺀 뒤 60분을 더하면 된다. 따라서 10 - 45 + 60 =15분임을 알 수 있다.

    3-1) 그렇다면 시간은 0시일때와 1~23시일때 / 분은 45분 이상과 미만으로 나눌수 있다.

    ex) 1~23시 이면서 45분미만일 때, 예를 들어 1시 44분일 때의 45분 전은 3번에서 구했다 싶이  현재 시각에서 15분을 더해주고 시간에서 1시간 빼주면 된다. 1시 44분 -> (1-1)시(44+15분) => 0시 59분

    4. 위와 같은 케이스를 분류하였더니 총 4가지가 나왔다.       

    [my_code]

    H,M = map(int,input().split())           # 시간 = H , 분 = M 으로 입력 받는다. 
    if 0<H<24 and 0<=M<45:                   # 1시부터 23시까지  / 0분부터 44분까지
        print("{0} {1}".format(H-1,M+15))    # 44분까지 45분을 빼면 '시'가 바뀌니 (-1) / 분은 +15
    elif 0<H<24 and 45<=M:                   # 1시부터 23시까지  / 45분이상~
        print("{0} {1}".format(H,M-45))      # 45분이상에서 45분을 빼면 '시'는 줄어들지 않음. 
    elif H==0 and 0<=M<45:                   # 0시일 때  / 0분부터 44분까지
        print("{0} {1}".format("23",M+15))   # Line 3과 같이 -1를 하게 되면 -1시가 됨. 23으로 고정
    else:                                    # 0시일 때  / 45분이상~  
        print("{0} {1}".format(H,M-45))      # 45분이상에서 45분을 빼면 '시'는 줄어들지 않음.


    [문제점]

    1. 귀찮았다. 생각하는 게, 근데 그 귀찮음이 좋았다. 최소 내가 배운 거에서 생각하면 귀찮더라도 풀 수 있었으니깐.
    [문제점 해결]

    none

    # 2,525 : 오븐 시계

    [문제 풀기 전 생각한 부분]

    1. if문으로 알람시계 문제처럼 풀려면 경우의 수가..너무 많은데..

    2. 다른방법이 없나. 
    [my_code]

    H, M = map(int, input().split())
    timer = int(input()) 
    
    H += timer // 60       # timer(요리시간) //(몫을 구하는) = H = H + 1 (60분이상일 경우)
    M += timer % 60        # timer %(나머지) 
    
    if M >= 60:            # M + timer = 60분 이상일 경우
        H += 1             # H = H + 1   
        M -= 60            # M = M -60  (시간으로 넘어감.)
    if H >= 24:            # 25시는 존재하지 않음. 
        H -= 24            # 따라서 -24를 해준다. 
    
    print(H,M)


    [문제점]

    none
    [문제점 해결]

    none

    # 2,480 : 주사위 세 개

    [문제 풀기 전 생각한 부분]

    1. 조건 3개가 친절하게 주어졌다.

    2. 주어진 3개의 주사위 눈을 a, b, c라고 가정한다.

    3. 크게 3가지로 나뉜다. a=b=c(3수가 같은 경우), a=b, a=c, b=c( 2개의 숫자가 같은경우), a,b,c( 각각 다른수인경우) 
    [my_code]

    a,b,c = map(int,input().split())
    if a==b==c:                   # a,b,c 가 같은 경우
        print(10000 + a*1000)
    elif a ==b or a==c:           # a=b 인경우와 a=c 인경우
        print(1000+a*100)
    elif b ==c:                   # b = c 인 경우 
        print(1000+b*100)
    else:                         # 그 외(3수 모두 다른 경우) 제일 큰 값에 100을 곱함.
        print(max(a,b,c)*100)


    [문제점]

    none
    [문제점 해결]

    none

     

    [조건문을 마치며]

    약간 암기식으로 풀고 있는 거 같은데 감부터 좀 잡을게요 

     

    + 위 모든 정보는 잘못된 정보를 제공할 수 있으니, 공부에 참고만 부탁드립니다.

    + 틀린 부분 | 여기서 더 생각하면 좋을 부분도 댓글로 적어주시면 감사하겠습니다. 

     

Designed by Tistory.