250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 이벤트
- ScrollToPlugin
- gsap
- 스크롤
- java
- 일본어
- 알고리즘
- 함수
- 데이터통신
- ArrayList
- JLPT
- JavaScript
- 네트워킹
- quizlet
- 단어장
- React
- 연습문제
- 자바
- 자바스크립트
- 백준
- reactjs code snippets
- prettier-code formatter
- html
- 한빛아카데미
- 초연결 사회의 데이터통신과 네트워킹
- 라이브러리
- Algorithm
- scrolly
- Node.js
- 초연결사회의 데이터통신과 네트워킹
Archives
- Today
- Total
umilove98의 블로그
백준 1544 Java 자바 본문
반응형
단어를 입력받아 해당 단어가 기존에 있던 단어의 사이클 단어인지 비교한다.
기존에 있던 모든 단어들 중 입력받은 단어와 글자 수가 같은 단어들을 골라 해당 단어를 한 글자씩 돌려가며 입력받은 단어와 비교한다.
비교 중 완전히 같은 단어가 만들어지면 입력단어는 기존 단어의 사이클 단어이므로 패스
기존에 있던 모든 단어들과 비교해봤지만 같은 단어가 만들어지지 않았다면 새로운 단어이므로 리스트에 입력
이를 반복하여 총 리스트에 입력된 단어들의 개수를 출력하면 된다.
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
49
50
51
52
53
54
55
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Q1544 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
ArrayList<String> list = new ArrayList<String>(); // 새로운 글자가 입력되면 저장할 리스트 생성
for(int i = 0; i < n; i++) {
String word = br.readLine();
boolean isequal = false;
for(int j = 0; j < list.size(); j++) {
if(list.get(j).length() == word.length()) { // 저장되어 있는 단어들 중 현재 입력단어와 글자 수가 똑같은것들만 비교
if(compare(list.get(j), word)) {
isequal = true;
break;
}
}
}
if(isequal == false) { // 기존에 있던 글자가 아닌것으로 정해지면 리스트에 추가시킴
list.add(word);
}
}
System.out.println(list.size()); // 리스트의 사이즈가 문자들의 종류이므로 출력시켜줌
}
public static boolean compare(String s, String w) {
boolean equal = false;
StringBuffer sb = new StringBuffer();
sb.append(s);
for(int i = 0; i < s.length(); i++) {
equal = true;
for(int j = 0; j < s.length(); j++) { // 해당 두 단어의 모든 글자가 똑같은지 확인
if(sb.toString().charAt(j) == w.charAt(j)) {
}else {
equal = false;
}
}
if(equal) { // 서로 다른 글자가 하나라도 있다면 false이므로 계속 진행
break;
}
sb = sb.append(sb.charAt(0)).deleteCharAt(0); // 비교대상 단어의 맨 앞글자를 맨 뒤에 옮겨붙임
}
return equal;
}
}
|
cs |
반응형
'algorithm > 백준' 카테고리의 다른 글
백준 1730 Java 자바 (0) | 2021.08.18 |
---|---|
백준 2061 Java 자바 (0) | 2021.08.18 |
백준 1712 Java 자바 (0) | 2021.08.16 |
백준 1531 Java 자바 (0) | 2021.08.13 |
백준 2010 Java 자바 (0) | 2021.08.13 |