haju__log

[python][백준/BOJ] 2566번 : 최댓값 본문

BOJ_백준

[python][백준/BOJ] 2566번 : 최댓값

haju 2023. 2. 28. 22:00
반응형

https://www.acmicpc.net/problem/2566

 

2566번: 최댓값

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

www.acmicpc.net

이렇게 코드 짰는데 틀림

>>

l= [[0 for col in range(9)] for row in range(9)]
for i in range(9):
    l[i]=list(map(int,input().split()))

tmp=[]
for i in range(9):
    tmp.append(max(l[i]))
total=max(tmp)

resulti=0
resultj=0
for i in range(9):
    if (l[i].count(total)==1):
        resulti=i
        resultj=l[i].index(total)

print(total)
print(resulti+1,resultj+1)

✅ 반례 찾음

3 23 85 34 17 74 25 52 65
10 7 39 42 88 52 14 72 63
87 100 100 78 53 45 18 84 53
34 28 64 85 12 16 75 36 55
21 77 45 35 28 75 90 76 1
25 87 65 15 28 11 37 28 74
65 27 75 41 7 1 78 64 39
47 47 70 45 23 65 3 41 44
87 13 82 38 31 12 29 29 10

출력 기댓값 100/ 3 2 or 3 3  
내 출력값 100/ 1 1

=> 같은 행 내에 같은 수가 1개만 있을 경우만을 가정했기에 틀린 코드 !

 

>> 수정된 코드

l= [[0 for col in range(9)] for row in range(9)]
for i in range(9):
    l[i]=list(map(int,input().split()))

tmp=[]
for i in range(9):
    tmp.append(max(l[i]))
total=max(tmp)

resulti=0
resultj=0
for i in range(9):
    for j in range(9):
        if (l[i][j]==total):
            resulti=i
            resultj=j

print(total)
print(resulti+1,resultj+1)

 

>>짧은 코드 참고..오..

max_num = 0

for i in range(9):
    row = list(map(int, input().split())) #굳이 행렬을 저장할 필요는 없다
    if max(row) > max_num:
        max_num = max(row) #최댓값
        x = i + 1 #행
        y = row.index(max_num) + 1 #열
print(max_num)
print(x,y)
반응형