코딩 테스트

[코딩테스트] 백준 1316번: 그룹 단어 체커

dev.jelee 2025. 6. 20. 03:30

# 문제

 

# 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class BOJ1316_v1 {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int N = Integer.parseInt(br.readLine()); // N개
    int count = 0; // 그룹 단어 몇개 있는지 세기 위한 변수
    boolean check; // 그룹 단어인지 체크하기 위한 변수

    for (int i = 0; i < N; i++) { // N번 반복
      String[] inputArr = br.readLine().split(""); // 입력값 공백 기준으로 나누어 배열로 저장
      ArrayList<String> arr = new ArrayList<>(); // 리스트 생성
      arr.add(0, inputArr[0]); // 미리 arr에 inputArr 0번째 값 저장
      check = true; // 매번 기본값 true 초기화
      
      for (int j = 0; j < inputArr.length - 1; j++) { // inputArr 길이-1 만큼 반복
        if (!inputArr[j].equals(inputArr[j+1])) { // inputArr 전, 후 문자열 같지 않으면

          if (arr.contains(inputArr[j+1])) { // arr에 해당 문자가 있으면 x
            check = false;
            break;
          };
          arr.add(inputArr[j+1]); // arr에 해당 문자 없으면 add
          // System.out.println(inputArr[j+1]); // 콘솔로 확인
        } else {
          continue;
        }
      }

      // System.out.println("arr: " + arr); // 잘 들어오는지 콘솔로 확인

      if (check == true) {
        count++;
      }
    }

    System.out.println(count);
    br.close();
  }
}

 

# 입/출력 결과

 

# 풀이

  1. 입력 받은 값을 한 글자씩 나누어 배열로 저장 -> String[] inputArr
  2. inputArr의 index 기준으로 i번째, i+1번째를 비교하기
  3. i번째와 i+1번째가 다르면 리스트에 i+1번째 글자를 add 해주는데, 그 전에 리스트에 i+1번째 글자가 있는지 체크하기
  4. 만약에 있으면 그룹 단어가 아니기 때문에 false 처리하고 break 걸기
  5. 만약에 없으면 i+1번째 글자 추가
  6. N번 반복할 때마다 마지막에 check 변수가 true면 count 세기

 

# 메모

  • 처음에 어떻게 풀어야겠다! 라고 생각은 했지만 막상 컴퓨터적인 사고로 생각하려니까 멈칫 했다.
  • 그래도 이내 규칙을 찾으려고 노력했다.
  • 내가 찾은 방법은 입력받은 단어를 한글자씩 나누어 배열로 저장하고, 앞과 뒤. 그러니까 i번째와 i+1번째 글자를 비교하여 틀리면 뒤의 글자(i+1번째)를 리스트에 추가를 하는데 추가하기 전에 리스트에 해당 글자가 있는지 먼저 체크하도록 했다.
  • 만약에 리스트에 해당 글자가 있으면 이미 나왔던 글자이기 때문에 그룹 단어가 아니라는 의미라서 false로 처리하고 break를 걸어 해당 for문을 빠져나와 다음 문자를 입력 받도록 했다.
  • 이게 말로 설명하려고 하니 표현력이 부족한 거 같다. ㅠㅠ...