티스토리 뷰
Q.1316 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
입력 :
첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.
출력 :
첫째 줄에 그룹 단어의 개수를 출력한다.
<소스 코드>
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 |
import java.util.*;
public class Prac {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = 0;
int n = sc.nextInt();//단어 갯수 입력
int answer = n;//answer에 단어 갯수 대입
for(int test_case = 0; test_case < n; test_case++) {
String word = sc.next();//단어 입력
boolean[] checker = new boolean[26];//체커 배열 선언. 등장한 문자는 true로 변경한다.
for(i = 1; i < word.length(); i++) {//단어의 길이만큼 반복
if(word.charAt(i-1) != word.charAt(i)) {//현재 문자와 이전 문자가 같지 않다면
if(checker[word.charAt(i)-97] == true) { //현재 문자가 이전에 나온적이 있다면
answer--; //그룹단어가 아니므로 answer - 1
break; //더 이상 확인할 필요가 없으므로 break;
}
checker[word.charAt(i-1) - 97] = true;//checker 배열의 현재 단어 위치를 true로 변경한다.
}
}
}
System.out.println(answer);
}
} |
cs |
<실행 결과>
<해법>
boolean 타입의 checker 배열을 선언해 등장한 문자를 확인하는 배열을 선언한다.
반복문을 통해 현재 문자가 이전에 등장한 문자인지 확인하는 과정을 거치는데, 이전의 문자가 현재 문자와 다를시 연속단어가 아니므로
이 때 checker 배열을 통해 이전에 이 문자가 등장했는지 확인하면 문제가 해결된다.
for i = 1 word의 길이까지
if 현재 단어(i)가 이전 단어(i -1)와 다를 시
if 현재 단어가 이전에 등장한 적이 있다면 (checker[현재 단어 index] == true)
answer -= 1;
break;
등장한 적이 없다면 checker[현재 단어 index] = true. 단어가 등장했음을 표시한다.
문제 사이트 및 참고 사이트 : https://www.acmicpc.net/problem/1316
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
※
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[백준]문자열 사용하기 (0) | 2017.10.20 |
---|---|
[백준]2941번, 크로아티아 알파벳 (1) | 2017.10.17 |
[백준]1157번 단어 공부 (0) | 2017.10.09 |
[백준]1차원 배열 사용하기 (0) | 2017.10.08 |
[백준]1152번, 단어의 개수 (0) | 2017.10.07 |
- Total
- Today
- Yesterday
- 자바
- 백준 10451
- 파이썬 터틀
- 백준 11501
- 명품 c++ 실습
- 백준 1874
- css 그리드
- 파이썬 함수
- 파이썬 while
- 파이썬 문자열
- 파이썬 예제
- 자료구조
- 파이썬
- 파이썬 단계적 개선
- 자바 에센셜 실습문제
- 자바스크립트 그래프
- 백준
- 파이썬 객체
- 파이썬 if문
- 파이썬 클래스
- 파이썬 진수 변환
- 자바스크립트 자료구조
- 버츄어박스
- css
- css 박스
- 파이썬 for
- 웹
- 파이썬 리스트
- 파이썬 연산자
- 파이썬 선택문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |