[Python Silver V 1316]
https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
첫 번째 입력은 입력될 단어의 개수가 숫자로 들어오고
두 번째 입력은 단어가 하나씩 입력됩니다.
이문제는 두 개 이상의 문자를 사용하는 경우 첫 번째 문자가 나오고 나서 두 번째 문자가 나오고 나면 첫 번째 문자는 사용하면 안 됩니다.
제가 생각한 방법은. 입력된 단어를 하나 골라 리스트로 변환시키고 이 리스트에서 중복되지 않는 글자는 다른 리스트에 저장 한 후. 다시 한번 이 단어를 검사합니다. 검사방법은 이전단어와 현재 단어로 구분하여 이전단어와 현재 단어가 다른 경우 위 리스트에서 해당 글자를 삭제하고 검사하는 동안 삭제된 문자를 삭제 요청하는 경우를 숫자로 체크 합니다.
결론은 이전에 나온 문자가 나왔는지 검사하는 것 입니다.
[ 1 ] Count에 int 형으로 형 변환된 입력값을 받습니다.
[ 4 ~ 5 ] Count 수만큼 입력 받아 Word_List 라는 리스트에 추가해 줍니다,
[ 6 ] for문을 사용해서 0부터 Word_List 의 크기만큼 i를 1씩 증가시켜주며 반복시켜줍니다.
[ 7 ~ 8 ] Word1,2 에 이번에 사용할 단어를 Word_List 에서 가져와서 넣어둡니다.
[ 9 ] for 문을 사용하여 Word1 에 있는 단어의 스펠링 하나하나씩 j 에 넘겨줍니다.
[ 10 ~ 11 ] 만약 Word_Check 리스트가 비어있다면 j 값을 추가해 줍니다.
[ 12 ~ 17 ] 만약 Word_Check 비어있지 않다면 다음 for문을 Word_Check의 길이만큼 실행합니다.
만약 Word_Check의 값이 j와 같다면 for 문을 중단하고 나오고 그게 아니라 Word_Check가 끝날 때까지 진행된다면 이번 j 를 Word_Check에 넣어줍니다.
[ 19 ~ 27 ] Last_Word로 이전 스펠링을 기억하고 Cur_Word로 현재의 스팰링을 기억합니다.
이전 스펠링과 현재 스펠링이 다르고 이전 스펠링이 0이 아닌 경우
또 Word_Check에 이전 스펠링 과 현재 스펠리의 개수가 0 초과인 경우
Word_Check 리스트에서 이전 단어를 지웁니다.
만약 위의 조건이 틀린다면 Result에 1을 더하고 for문을 나옵니다.
결과는 Count - Result 를 해주게 되면 나오게 됩니다.