목차
백준 단계별로 풀어보기
25.08.29
7단계: 2차원 배열
2566번: 최댓값
문제 링크 : https://www.acmicpc.net/problem/2566
문제 풀이
>> 문제를 풀기 위해 알아야 할 개념
- StringBuilder.Clear()
: 현재 StringBuilder 인스턴스에서 모든 문자를 제거한다.
--> 이를 활용하여 찾은 최댓값이 기존의 최댓값보다 더 클 때, 추가한 모든 문자들을 제거해준다.
※ 참고 문서
StringBuilder.Clear Method (System.Text)
Removes all characters from the current StringBuilder instance.
learn.microsoft.com
- StringBuilder.AppendLine()
: Append()는 int, double 등을 추가할 수 있지만 AppendLind()은 문자열만 추가할 수 있다.
--> 이 때문에 처음에 AppendLine()으로 최댓값(int)을 넣으면서 바로 줄 바꿈을 해주려고 했는데, 컴파일러 에러가 떴다.
※ 참고 문서
StringBuilder.AppendLine Method (System.Text)
Appends the default line terminator, or a copy of a specified string and the default line terminator, to the end of this instance.
learn.microsoft.com
- 연산자 우선순위와 '+' 연산의 오버로딩
: 처음에 최댓값의 행과 열을 출력하는 코드를 아래와 같이 작성했었는데, 출력값이 특이하게 나왔다.
sb.Append(i + 1 + " " + j + 1);
// 예상 출력값 : 5 7
// 실제 출력값 : 5 61
--> 알고보니, 처음 'i + 1'은 정상적으로 정수 연산이 실행됐지만, 뒤의 'j + 1'은 문자열 연결로 실행되어 j값인 6과 숫자 1이 문자열로 연결된 것이었다.
▶ 연산은 정수 연산을 마친 뒤 문자열을 연결하는 순서로 진행되므로 j + 1을 괄호로 묶어서 먼저 정수 연산으로 실행되도록 해야 원하는 결과값을 얻을 수 있다.
--> 좀 더 가시성을 높이기 위해 'i + 1'에도 괄호를 넣어줬다.
sb.Append((i + 1) + " " + (j + 1));
>> 풀이
- 받은 입력값을 넣어줄 배열을 선언하고 최댓값을 담을 변수를 선언한다. 이때 배열의 값 중 최솟값이 0이므로 최댓값을 0보다 작도록 초기화한다.
- 이중 반복문을 통해 입력값을 받아 배열에 넣어준다.
- 배열에 넣을 때 그 값을 최댓값과 비교하여 최댓값보다 크다면 최댓값을 갱신해주면서 기존의 StringBuilder에 넣어둔 값들을 초기화하고, 그 최댓값과 값이 몇 행, 몇 열인지 StringBuilder에 추가한다.
- 마지막에 출력한다.
정답 코드
using System.Text;
class Backjoon
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
int[,] arr = new int[9, 9];
int max = -1;
for (int i = 0; i < 9; i++)
{
string[] input = Console.ReadLine().Split();
for (int j = 0; j < 9; j++)
{
arr[i, j] = int.Parse(input[j]);
if (arr[i, j] > max)
{
max = arr[i, j];
sb.Clear();
sb.AppendLine(max.ToString());
sb.Append((i + 1) + " " + (j + 1));
}
}
}
Console.Write(sb.ToString());
}
}'Development > Baekjoon' 카테고리의 다른 글
| [C#] 2563번: 색종이 (0) | 2025.09.03 |
|---|---|
| [C#] 10798번: 세로읽기 (0) | 2025.09.02 |
| [C#] 2783번: 행렬 덧셈 (1) | 2025.08.28 |
| [C#] 25206번: 너의 평점은 (2) | 2025.08.27 |
| [C#] 1316번: 그룹 단어 체커 (0) | 2025.08.25 |