먹었으면 뇌를 쓰자

백준 10818 java - 최소, 최대 (★) 본문

JAVA/백준 알고리즘

백준 10818 java - 최소, 최대 (★)

뇌이비 2022. 11. 22. 08:05

문제

 

 

 

 

잘못된 코드

1) 배열을 먼저 만들고

2) for문으로 최댓값과 최솟값을 찾으려 했다

그런데 틀렸습니다...

 

 

 

 

정답

다른 분들의 알고리즘과 비교해봐도 틀린 부분이 없었다

그래서 혹시나 하는 마음에

print를 println으로 바꿨더니 성공함 (어이x)

 

결과가 한 줄에 출력되길래 

나름 댁알이 쓴다고 print로 처리했는데

지금 와 생각해보니 띄어쓰기가 안되서 틀렸던 것 같다.

 

아침이라...댁알이가 살짝 젤리화됐나보다. 

 

 

 

 

+ 풀이 추가 (* String.valueOf / Integer.toString )

 

BufferedReader와 BufferedWriter를 이용해 풀어보고 싶었다.

BufferedWriter 때문에 마지막 형 변환이 중요한데

처음에는 형 변환을 아예 안해서 NullPointer 런타임 에러가 떴다.

 

String.valueOf() / Integer.toString() 메소드를 걸어서 형 변환하면 정답.

 

둘의 기능은 Int를 String으로 바꿔주는 것으로 동일하지만,

String.valueOf() 는 null값이 오면 "null"을 출력하고 

Integer.toString()는 null값이 오면 NullPointerExecption을 발생시킨다.

 

성능이나 코드 길이 면에서는 String.valueOf() 가 좋다.

그렇지만 새로운 메소드를 알게 됐으니 한번 써봤다.

 

 

 

 

 

 

★꼭 알아두기

 

1) 처음에 StringTokenizer 메소드를 변수 n보다 먼저 선언해버려서 NumberFormat 런타임 에러가 났다.

br.readLine()으로 먼저 변수 n을 받은 다음,

StringTokenize 메소드를 선언하고 공백 단위로 배열 array를 받으니 정상이 됐다.

 

2)  min, max 변수를 배열 만들기 전에 선언했더니 틀렸다.

두 변수는 배열 값을 갖기 때문에 꼭 배열을 만든 다음에 선언해야 한다!

 

3)  if문 구성을 바꿨더니 틀려버렸다.

arr[ i ] 에 min 값을 넣는 게 아니라,

min 에 arr[ i ] 값을 넣는 것이다.

 

 

바보같은 실수는 두 번 하지 맙시다.

 

Comments