최댓값(2566번)

PearLine_Zero·2024년 3월 20일

하루에 1커밋 CodingTest

목록 보기
60/110
post-thumbnail
  • 티어 : Bronze 3
  • 정답여부 : 오답
  • 알고리즘 유형 : 구현
  • 시간 제한 : 1초

💡문제

<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

예를 들어, 다음과 같이 81개의 수가 주어지면

이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

💡입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다

💡출력

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

💡예제 입력 1

3 23 85 34 17 74 25 52 65
10 7 39 42 88 52 14 72 63
87 42 18 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 89 78 64 39
47 47 70 45 23 65 3 41 44
87 13 82 38 31 12 29 29 80

💡예제 출력 1

90
5 7

💡문제요약

주어진 9*9에서 가장 큰 수와 그 수의 위치를 찾으면 되는 문제

💡알고리즘 설계

  1. 9개로 수를 입력받아 2차원 배열을 만들어줌
  2. 가장 큰 수 변수와 그 수의 행, 열 변수를 만들어줌
  3. 격자판 만큼 길이를 반복하는데 격자판의 행과 열이 max_value보다 크면 그 값을 넣어줌
  4. 그 다음 행과 열의 각각 +1를 해줌
  5. 출력

💡작성코드

  • python
grid = []
for _ in range(9):
    line = list(map(int, input().split()))
    grid.append(line)
max_value = grid[0][0]
max_location = 0, 0
for i in range (len(grid)):
    for j in range (len(grid[i])):
        if grid[i][j] > max_value:
            max_value = grid[i][j]
            max_location =  i , j       
print(max_value)
print(max_location)
table = [list(map(int, input().split())) for _ in range(9)]    

💡틀린 이유 or 수정할 부분

처음에 행과 열을 따로 출력하는것도 몰랐고 +1를 안 해준게 오답인거 같아 그래서 다시 수정함 ㅎㅎ

💡틀린 부분 수정 or 다른풀이

  • python
grid = []
for _ in range(9):
    line = list(map(int, input().split()))
    grid.append(line)
max_value = grid[0][0]
max_row , max_col  = 0 , 0
for row in range (len(grid)):
    for col in range (len(grid[row])):
        if grid[row][col] >= max_value:
            max_value = grid[row][col]
            max_row , max_col =  row + 1, col+ 1
print(max_value)
print(max_row , max_col)  

💡느낀점 or 기억할 정보

배열은 아직까지도 헷갈린다..ㅎㅎ

profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글