22.02.25 백준 1316번

김민혁·2022년 2월 25일
0

하루한문제

목록 보기
16/22

문제

첫번째 제출한답

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int result = 0;
		for (int i = 0; i < n; i++) {
			String word = sc.next();
			
			for (int j = 0; j < word.length(); j++) {
				int cnt = 1;
				boolean flag = false;
				word = word.replace(String.valueOf(word.charAt(j)), "*");
				for (int k = 0; k < word.length(); k++) {
					if(cnt==0&&word.charAt(k)=='*') {
						result++; 
						flag = true;
						break;	
					}
					
					if(word.charAt(k)=='*') {
						cnt = 1;
					} else {
						cnt = 0;
					}
				}
				if(flag) {
					break;
				}
			}
			
			
			
		}
		
		System.out.println(n-result);
		
	}
}

접근방식

-> 단어의 길이만큼 for문(j)을 돌리고 첫번째에 나온 문자를 모두 ""로 교체한뒤 단어의 길이 만큼 for문(k)을 한번더 돌린다.
-> j반복문에서 cnt의 초기값을 1로주었고 k반복문에서 k번째 문자가 "
"이면 cnt = 1 아니면 0으로 바꿔준다
->만약 cnt가 0이고(이전문자가 이 아님) k번째 문자가 ""이라면 반복문을 빠져나가고 result++을 실행한다.
(flag값은 j 반복문 까지 빠져나가기위해 사용하였다)
(result값은 그룹단어가 아닌 단어의 숫자이다)

그룹단어의 수를 출력해주면 끝!
-> 그룹단어의 수 = 전체단어수 - 그룹단어가 아닌수

결과 -> 정답

profile
안녕하세요 김민혁입니다.

0개의 댓글