반응형
https://www.acmicpc.net/problem/1316
문제풀이 핵심은 for 반복문 중첩을 활용했다.
그룹단어 체크 메소드에서 값을 입력받고 그룹단어라면 0을 출력하고 아니라면 1을 출력하게하였다.
만약 aabca라는 값을 입력받는다면
맨 첫번째 값 a를 temp로 지정하고 temp와 뒤에값 a,b,c,a 를 순서대로 비교해간다.
비교해가다가 a와 다른 알파벳 b를 만나게되면
b뒤에 있는 값 c,a 중 현재 temp와 같은 a가 있는지 검사한다.
있다면 그룹단어 1을 출력한다.
이런식으로 계속 입력받은 단어들을 반복 비교한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import java.util.Scanner; public class Main1316 { public static void main(String[] args) { Scanner sc= new Scanner(System.in); int wordCount = sc.nextInt();//입력 단어 갯수 int output = wordCount;//일단 입력받은 단어들이 전부 그룹단어라고 가정 sc.nextLine(); String words = new String(); for(int i=0; i<wordCount; i++) { words = sc.nextLine().trim(); output = output - groupCheck(words);//그룹단어 체크 } System.out.println(output);//그룹단어수 출력 } static int groupCheck(String words) {//그룹단어라면 0리턴, 아니라면 1리턴 char temp; int groupWord = 0;//일단 0을주고 그룹단어로 가정하고 시작 char[] currentWord = words.toCharArray();//문자 배열로 담는다 temp = currentWord[0]; outerLoop: for(int k=1; k<currentWord.length; k++) {//단어하나씩 접근 if(temp != currentWord[k]) {//비교를 통해 temp의 값과 다른값이 나온다면 for(int j=k+1; j<currentWord.length; j++) {//그룹단어인지 체크 반복 if(temp == currentWord[j]) {//그룹단어가 아니라면 groupWord = groupWord+1;//1을 더하고 출력 break outerLoop;//반복문 2개 빠져나가자 } } temp=currentWord[k];//비교 값을 바꿔준다 } } return groupWord;//그룹단어가 아니라면 1출력 맞으면 0출력 } } | cs |
반응형
'Problem Solving > 백준' 카테고리의 다른 글
백준 2941번 (0) | 2019.01.26 |
---|---|
백준 1152번 (0) | 2019.01.26 |
백준 10809번 (0) | 2019.01.24 |
백준 2908 상수 (0) | 2019.01.20 |
백준 1158 번 (0) | 2019.01.06 |