1. 1316번
1) 문제
2) 풀이
3) 문법 및 풀이과정
이 문제 풀이의 아이디어는 각 알파벳을 확인할 때마다, 첫째, 앞에 그 알파벳이 있었는지 확인할 것(중복인지)과 둘째, 중복이라면 바로 직전이 그 알파벳이었는지 확인하는 두가지를 해야겠다는 생각에서부터 나왔다.
고려해야할 요소가 꽤 여러가지니 번호를 매겨 순차적으로 살펴보겠다.
(1) import sys 후 첫번째 입력값을 받는다. sys를 사용한 이유는 이게 시간제한에 더 효율적인 방법이기 때문이다.
(2) case의 값만큼 for문을 반복하여 word를 입력값으로 받고 이제 각각 알파벳을 하나씩 확인하여 alph_list에 append할 것이므로 alph_list도 정의해둔다.
(3) for문을 한 번 더 사용하고 if도 사용하여 이번에는 word 의 각 자리를 확인한다. 만약 만들어둔 list에 그 알파벳이 없다면 append(중복이 아니므로) 하고 아니라면 현재 list의 마지막 index 자리에 위치한 알파벳이 현재 고려 중인 알파벳과 같은지 확인한다. 같다면 다시 append를 하면 되고, 아니라면 break를 하는데 그 전에 opp_cnt에 1을 더해준다.
+ 이 때, break를 하지 않고 계속 for문을 이어 나가면 그 후에 나오는 알파벳 중 그룹 단어가 아닌 조건에 부합하는 문자열이 재 등장하면 같은 문자열을 중복해서 세는 오류가 발생할 수 있다.
(6) opp_cnt는 그룹단어가 아닌 수를 세는 것이 되므로 전체 case 수에 opp_cnt를 빼서 그룹 단어의 개수를 최종적으로 출력한다.
'Learning-log > Algorithm 문풀' 카테고리의 다른 글
백준(파이썬, python) - 10807번 개수 세기(2022.11.01) (0) | 2022.11.01 |
---|---|
백준(파이썬, python) - 5597번 과제 안 내신 분..? (2022.11.01) (0) | 2022.11.01 |
백준(파이썬, python) - 2941번 (2022.10.31) (0) | 2022.10.31 |
백준(파이썬, python) - 1110번 더하기 싸이클(2022.10.18) (0) | 2022.10.31 |
백준(파이썬, python) - 10871번 (2022.10.17) (0) | 2022.10.31 |