728x90
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int cnt=N;
for(int i=0;i<N;i++){
String s = sc.next();
boolean chk[] = new boolean[26];
for(int j=0;j<s.length()-1;j++){
if(s.charAt(j)!=s.charAt(j+1)){
if(chk[s.charAt(j+1)-97]==true){
cnt--;
break;
}
}
chk[s.charAt(j)-97]=true;
}
}
System.out.println(cnt);
}
}
ㅋㅋㅋ
코드가 좀 비효율적으로 보이긴 하지만 그래도 혼자 풀었음
오랜만에 백준 풀어서 답을 어떤식으로 제출해야하는지 헷갈려서 옛날에 푼 거 참고함.
컴파일 에러 엄청많이 남;;;; ㅋㅋ
그래도 실전 코테를 위해 최대한 ide안써보는중..
+ 0716 복습
사실 전에푼건 좀 얻어걸린거에 가깝다.
ㅋㅋㅋ
나는 받은 문자열의 첫번째 문자와 3번째 문자를 비교했는데 같고 && 중간문자인 2번째 문자가 다르다면 그건 그룹문자가 아니기때문에 (ex) aba) false를 반환하는 식으로 그냥 큰 생각없이 코드를 짰고 테스트겸 제출했는데 통과됨ㅋ
근데 오늘 디버깅해보니 내 로직은 그거보다 더 정교했음ㅋㅋㅋㅋ
오늘 복습할겸 다른 사람들 코드를 보는데 다들
boolean[26] 이럼서.. 이상한 배열을 쓰는것임.
도대체 저게 뭐지 했는데 이제 알아냄.
a-z까지의 개수가 26이라서 26이라고 한 거 였음.
그래서 나도그런식으로 해봄
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int cnt=N;
for(int i=0;i<N;i++){
String s = sc.next();
boolean chk[] = new boolean[26];
for(int j=0;j<s.length()-1;j++){
if(s.charAt(j)!=s.charAt(j+1)){
if(chk[s.charAt(j+1)-97]==true){
cnt--;
break;
}
}
chk[s.charAt(j)-97]=true;
}
}
System.out.println(cnt);
}
}
boolean배열을 이런식으로 활용할 수 있다는 것을 배웠다는게 큰 수확임
근데 이거나 내가 원래 했던거나 속도는 비슷함.
내가 어떨결에 발견한 로직도 나름 괜춘한듯..? 뭔가 쓸데없는 확인이 더 늘겠지만.
728x90
'with my rubber duck > codingTest' 카테고리의 다른 글
[백준 10870] 피보나치 수 5 풀기 (0) | 2022.07.14 |
---|---|
[백준 1978]소수찾기. 소수 몇번짼데 아직도 헤매는지 모르겠네 (0) | 2022.07.13 |
[프로그래머스] 숫자 문자열과 영단어 풀어보기 (0) | 2022.07.11 |
[프로그래머스] 없는숫자 더하기 (0) | 2022.07.06 |
[프로그래머스] 최솟값 만들기 풀어보기 (처음으로 2단계) (0) | 2022.06.24 |
댓글