까잉이의 개발노트

[ 백준 1157 ] 단어 공부 JAVA(자바) 문제풀이 본문

개발문제풀이

[ 백준 1157 ] 단어 공부 JAVA(자바) 문제풀이

까잉이 2022. 7. 11. 15:18

내 풀이과정은 좀 복잡하다😵

내가 푼 방법은 Set을 이용해 중복되는 알파벳을 제외 시켜버린 배열을 만들어서

for문을 통해 중복되는 문자가 몇개인지와 제일 많이 나온 문자를 알아내서 출력하는 거다


풀이순서

1. 문자열(s)을 입력받은 후 .toUpperCase()로 모두 대문자로 만들어버린다.

2. Set을 선언하고 for문으로 입력받은 문자를 set에 추가한다

3. char[] arr를 선언해주고 Iterator를 이용해 while문을 set의 사이즈만큼 돌려

    set에 있는 것들을 arr에 추가한다

4. 제일 많이 중복된 문자 개수와 문자를 담을 int big, char bigChar를 선언해준다

5. 이중 for문을 이용하는데 첫 for문에서는 arr 개수 만큼 두번째 for문에서는 입력받은 문자열(s)의 문자수 만큼 돌린다.

6. if문으로 arr과 s.charAt()를 비교해 같은 경우 중복되는 개수를 담는 count를 증감시킨다.

7. 마지막으로 제일 많이 중복된 문자개수(big)보다 현재 중복된 개수(count)가 크면 현재 문자를 bigChar에 담고

    만약 big과 count가 같으면 bigChar에 '?'를 담는다

 

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String s = sc.next().toUpperCase();

		Set set = new HashSet();
		for(int i = 0; i < s.length(); i++) {
			set.add(s.charAt(i));
		}

		char[] arr = new char[set.size()];
		Iterator iter = set.iterator();
		int n = 0;
		while(iter.hasNext()) {
			arr[n] = (char)iter.next();
			n++;
		}

		int big = 0; // 제일 많이 중복된 문자개수
		char bigChar = ' '; // 제일 많이 중복된 문자
		for(int i = 0; i < arr.length; i++) {
			int count = 0; // 중복 개수
			for(int j = 0; j < s.length(); j++){
				if(arr[i] == s.charAt(j)){
					count++;
				}
			}

			if(big < count) {
				big = count;
				bigChar = arr[i];
			}else if(big == count) {
				bigChar = '?';
			}
		}

		System.out.print(bigChar);
	}

}
Comments