article thumbnail image
Published 2023. 1. 6. 19:58

문제 설명

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

 

2566번: 최댓값

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

www.acmicpc.net

첫째 줄부터 아홉 번째 줄 까지의 한 줄의 아홉 개의 수 중에서, 최대값과 최댓값이 위치한 행과 열을 구하기

 

문제 풀이법

81개의 수를 입력받으면서 그때 그때 가장 큰 수와, 그 수의 행과 열을 저장후, 출력해주었다

 

하지만 제출했을 때 100%에서 틀린 닶이 나왔다

이것 저것 반례를 살펴보니 행과 열의 수를 초기화 하지 않아서 생기는 문제였다

만일 모든 수가 0이라면 x와 y는 max를 값을 찾아서 값이 설정이 되는 if문을 타지 않으므로 초기화되지 않는 수를 출력하게 되는 것이다

또한 문제에서 행과 열은 1부터 시작하므로, x와 y를 1로 초기화해주면 정답으로 처리가 된다

 

소스 코드

#include <iostream>

using namespace std;

int main()
{
    int max = 0;
    int tmp;
    int x = 1;
    int y = 1;
    
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
        {
            cin >> tmp;
            if (tmp > max)
            {
                max = tmp;
                x = j + 1;
                y = i + 1;
            }
        }
    }
    
    printf("%d\n", max);
    printf("%d %d\n", y, x);
    
    return 0;
}

'Algorithm Study' 카테고리의 다른 글

[백준] 10807 개수 세기  (0) 2023.01.09
[백준] 3273 두 수의 합  (0) 2023.01.06
[백준] 1475 방 번호  (0) 2023.01.06
[백준] 2577 숫자의 개수  (0) 2023.01.06
[백준] 10808 알파벳 개수  (0) 2023.01.06
복사했습니다!