반응형
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 |
Tags
- 자료 구조
- KMP알고리즘
- Queue
- 큐
- 정렬
- 해시를 사용한 집합과 맵
- 시뮬레이션
- 실패함수
- 사칙연산
- 수학
- LeetCode Remove Duplicates from Sorted List in c
- LeetCode 83번
- 정수론
- 프로그래머스
- 구현
- 스택
- 문자열
- LeetCode 83 c언어
- 유클리드 호제법
- 연결리스트 중복제거
- 별 찍기
- 브루트포스 알고리즘
- 다이나믹 프로그래밍
- 문자열제곱
- 조합론
- 임의 정밀도 / 큰 수 연산
- 이분 탐색
- 연결리스트 정렬
- 큰 수 연산
- 재귀
Archives
- Today
- Total
hahn
단계별로 풀어보기(문자열 - 그룹 단어 체커) 본문
728x90
반응형
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int insertWord = sc.nextInt(),
answer = 0,
strArrLength;
String word;
char compare;
boolean check;
String[] strArr;
for(int i = 0; i < insertWord; i++){
check = true;
word = "A" + sc.next() + "A";
for(int j = 0; j < 26; j++){
compare = (char) (97 + j);
strArr = word.split(Character.toString(compare));
strArrLength = strArr.length;
if(strArrLength == 2) continue;
for(int k = 0; k < strArrLength; k++) {
if(strArr[k].isEmpty()) strArrLength-- ;
}
if(!(strArrLength == 2 || strArrLength == 1)) check = false;
}
if(check) answer++;
}
System.out.println(answer);
}
}
틀린 코드
이게 왜 틀렸나 반례를 찾아보고 있었는데
gooooood를 넣어보니 답이 예상과 다르게 나오는 걸 확인했다.
그래서 중간중간 출력해보면서 답을 찾아봤는데
또 같은 실수를 저질렀던 거였다......
for(int k = 0; k < strArrLength; k++) {
if(strArr[k].isEmpty()) strArrLength-- ;
}
이 부분 조건식에 strArrLength를 for 문안에서 감소하게 해놓고
조건으로 써버리니 문제가 됐던 거다.
분명 코드 작성할 때 strArrLength랑 strArr.length 중 뭐 쓸지 고민했었는데....
그냥 상관없겠지 하면서 strArrLength를 넣은 게 문제였다.
strArrLength를 strArr.length를 바꿔주니 정상적으로 실행됐다.
더보기
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int insertWord = sc.nextInt(),
answer = 0,
strArrLength;
String word;
char compare;
boolean check;
String[] strArr;
for(int i = 0; i < insertWord; i++){
check = true;
word = "A" + sc.next() + "A";
for(int j = 0; j < 26; j++){
compare = (char) (97 + j);
strArr = word.split(Character.toString(compare));
strArrLength = strArr.length;
if(strArrLength == 2) continue;
for(int k = 0; k < strArr.length; k++) {
if(strArr[k].isEmpty()) strArrLength-- ;
}
if(!(strArrLength == 2 || strArrLength == 1)) check = false;
}
if(check) answer++;
}
System.out.println(answer);
}
}
정신 차리자
728x90
반응형
'코딩테스트 연습 > 백준(JAVA)' 카테고리의 다른 글
단계별로 풀어보기(기본 수학1 - 벌집) (0) | 2021.08.23 |
---|---|
단계별로 풀어보기(기본 수학1 - 손익분기점) (0) | 2021.08.23 |
단계별로 풀어보기(문자열 - 2) (0) | 2021.08.23 |
단계별로 풀어보기(문자열 - 1) 실버 ㅅㅅㅅ (0) | 2021.08.22 |
단계별로 풀어보기(함수) (0) | 2021.08.22 |