김두두의 블로그
[python] 백준 2562번- 배열과 최댓값 본문
220302
https://www.acmicpc.net/problem/2562
2562번: 최댓값
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어
www.acmicpc.net
한지 오래돼서 예전에 내가 제출했던거 살짝 보고 다시 풀었음.. 그리고 내가 원하는대로 안나와서 좀 코드가 더럽다!
s_list=[int(input()) for i in range(9)]
k=0
m=max(s_list)
for i in range(0,len(s_list)-1):
if s_list[k]!=m:
k=k+1
else:
break
print(m)
print(k+1)
처음에 s_list로 input 받기
->계속 오류났는데 하도 오류나서 print(s_list)로 s_list 검사해봤는데 알고보니 다 죄다 ['1', '2', '3'...] 뭐 이런식으로 되어있었다. 그러니까 문자열로 계속 입력받아놓고 max 찾은 거... 이거 보고 넘 황당해서 재빨리 int(input())으로 바꿔줬습니다..
그리고 계속 뭘 해도 range(3) 이었다 치고 3 2 1 입력 받았으면 print(k)가 0이 나오길래 진짜 미쳐버리는줄
난 위에 글로벌 변수 k=0 땜에 적용안된 줄 알았는데 다른 수 넣으니까 갑자기 1 나오길래 걍 +1만 하면 된다는 사실을 얻었다.. 이거 나중에 +1안하고 처음부터 변수로 적용하려면 어떻게 해야하는 지 생각해봐야겠다. 지금 생각해보니 가장 첫번째에 maximum이 되는 수가 온다면 내 for문에선 바로 break가 되니까 k=0으로 되었던 듯...이렇게 항상 문제풀 땐 보이지 않는게 있다니까ㅋㅋㅋ 그래서 아마 k=1로 바꾸면 스무스하게 나올거같다
사실 계속 위 문제(k=0) 때문에 while 대신 for 쓴건데 알고보니 while 문제가 아니였네
s_list=[int(input()) for i in range(9)]
k=0
m=max(s_list)
while s_list[k]!=m:
k=k+1
print(m)
print(k+1)
다시해보니까 while도 잘된다
정말 k+1의 효과가 큰듯 ㅋㅋㅋ(while 문에서는 배열 때문에 일부러 k=0썼다!)
'it' 카테고리의 다른 글
[파이썬] 백준 2480번 주사위 세개 (0) | 2022.03.09 |
---|---|
[파이썬] 백준 2525번 오븐시계 (0) | 2022.03.04 |
R-What is boosting.cv? (0) | 2021.05.15 |
R-adaboost 중 error: Error in `[.data.frame`(data, , as.character(formula[[2]])) (0) | 2021.05.15 |
R-bagging함수 (데이터프레임) (0) | 2021.05.15 |