[BOJ_1157/JAVA] 단어공부

[BOJ_1157/JAVA] 단어공부

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

문제

풀이

처음에 해당 문제를 풀었을 때 메모리초과가 나서 당황스러웠다 ;; 코테공부를 시작한지 얼마안돼서 메모리초과는 처음 보았기때문이다.

변수를 너무 많이 써서 메모리초과가 난 것 같았다.

따라서 구글링하여 다른사람들은 어떻게 풀었는지 힌트를 얻었다.

1. 입력값을 받을 때 소문자, 대문자 상관없이 알바벳개수를 세주어야하기때문에 처음부터 대문자로 변환해주었다.

2. 대문자를 아스키값으로 바꿔주기위해 65를 빼주고 배열에 값을 추가해주었다. (알파벳 개수 세는 과정)

3. for문을 돌면서 배열의 값이 가장 큰 원소를 가져오고 +65를 해주어 char형으로 바꾸어 result에 저장함.

4. 만약에 배열의 가장 큰 값을 또 만나게 된다면 알파벳 개수가 같다는 뜻이므로 result에 '?' 저장함.

5. result를 출력해주었다.

코드

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BOJ1157 { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine().toUpperCase(); int [] alpha = new int[26]; for(int i=0;imax) { max=alpha[i]; index=i; result=(char) (index+65); }else if(max==alpha[i]) { result='?'; } } System.out.println(result); } }

from http://silvergal.tistory.com/75 by ccl(A) rewrite - 2021-12-11 20:27:59