문제를 보고 뭔소린가 했더니,,,
해당 블로그를 보고 드디어 이해를 하였습니다,,
https://hyunsun99.tistory.com/142
처음엔 따라한 코드
int count = int.Parse(Console.ReadLine()); //입력
int sum = count; //합계
bool isNext = false; //체크 여부
for(int i = 0; i < count; i++) {
isNext = false; //초기화
string put = Console.ReadLine(); //문자열 입력
for(int j = 0; j < put.Length - 1; j++) {
if(isNext) break; //이미 true일경우 탈출
if(put[j] == put[j + 1])
continue; //같을경우 다음 부분을 실행
for(int k = j; k < put.Length-1; k++) {
if(put[j] == put[k+1]) {
sum -= 1; //1빼고
isNext = true; //true로 만들기
break; //탈출
}
}
}
}
Console.WriteLine(sum); //출력
이걸 보고 for문이 여러번 도늘걸 보고 생각을 고쳤더니 짧아졌당,,,
int count = int.Parse(Console.ReadLine()); //개수 입력
int sum = count; //합계
//첫번째 for문
for(int i = 0; i < count; i++) {
string put = Console.ReadLine();
bool result = false; //결과 초기화
//두번째 for문
for(int j = 0; j < put.Length - 1; j++) {
if(put[j] == put[j + 1])
continue;
//세번째 for문 그러나 연산은 나중에,,
for(int k = j; k < put.Length-1; k++) {
if(put[j] == put[k+1]) {
result = true;
}
}
//결과에따라 두번째 for문 탈출 즉 연산회수가 줄어들긴함,,,,
if(result) {
sum -= 1;
break;
}
}
}
Console.WriteLine(sum);
그 외에 어째서 시간차이가 12ms나 났는지는 잘모르것다..
비록 메모리가 12정도 늘어났지만..
-----------------------------------------------------------------
저처럼 이해 못한분을 위한 문제 팁,,,,
1번 경우
happy
new
year
여기서 happy 는 한개씩 보면
h - h가 1번 나옴(이전 알파벳과 중첩 X)
a - a가 1번 나옴(이전 알파벳과 중첩 X)
p - p가 1번 나옴(이전 알파벳과 중첩 X)
p - p가 2번 나옴(이전 알파벳과 중첩 O)
y - y가 1번 나옴(이전 알파벳과 중첩 X)
n e w도 동일하게 1번만 나옵니다,, 만일 newn이랬다면 오답이에요. n이 붙어서 나온게 아니라 떨어져서 나왔기때문에!
반례로
yzyzy
zyzyz
y - y가 1번 나옴(이전 알파벳과 중첩X)
z - z가 1번 나옴(이전 알파벳과 중첩X)
y - y가 2번 나옴(이전 알파벳과 중첩X) + 이미 y는 한 번 이상 나왔으므로 오답
z
y
z - z가 1번 나옴(이전 알파벳과 중첩X)
y - y가 1번 나옴(이전 알파벳과 중첩X)
z - z가 2번 나옴(이전 알파벳과 중첩X) + 이미 y는 한 번 이상 나왔으므로 오답
y
z
결과는 0이 출력됩니당,,