-
[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
[조건문을 마치며]
약간 암기식으로 풀고 있는 거 같은데 감부터 좀 잡을게요
+ 위 모든 정보는 잘못된 정보를 제공할 수 있으니, 공부에 참고만 부탁드립니다.
+ 틀린 부분 | 여기서 더 생각하면 좋을 부분도 댓글로 적어주시면 감사하겠습니다.'코딩테스트 > 백준' 카테고리의 다른 글
[Python] 백준 3,460 : 이진수 (0) 2024.06.06 [Python] 백준 : 1차원 배열 (3) 2024.03.18 [Python] 백준 : 반복문 모음집 (1) 2024.01.27 [Python] 백준 : 조건문 1,330번, 두 수 비교하기 (0) 2024.01.22 [Python] 백준 : 입출력과 사칙연산 2,588번, 곱 (1) 2024.01.22