Day 2: 백준 [7단계] 문자열 - 그룹 단어 체커 분류
[결과]
[코드]
기록용이라, 나의 초기 구현에 대한 코드를 적어놓음. 밑에 더 좋은 코드가 있음.. 흑
[과정]
1. 각 문자열 원소별 딕셔너리화를 시키면 순서를 알 수 없기 때문에 안됨.
2. 각 원소와 다른 원소가 나왔을 때 이후 길이만큼 돌면서 그 원소가 있는지 확인한다? 너무 비효율적이라고 생각이 듦.
3. 각 원소별로 딕셔너리화해서 갯수를 알아놓은다음, 인접해있는 원소의 갯수(다른 원소가 나올때까지)와 동일할 시 pass, 그렇지 않을 시 break >> 원소의 길이만큼만 for문 돌면 될 것 같다!
>> 코드의 가독성이 떨어질 것이라 판단하여 다음 건으로 변경!
4. 각 원소별로 딕셔너리화해서 갯수를 알아놓은다음, 딕셔너리의 각 키값을 문자열에서의 인덱스 번호를 알아내서, 거기서부터 다른 원소가 나올 때까지의 갯수와 같으면 나머지도 검사, 그렇지 않을 시 break! >> 원소의 길이만큼만 돌면 됨.
[공부]
1. class collections.Counter([iterable-or-mapping]) ref: docs.python.org/3/library/collections.html
collections — Container datatypes — Python 3.9.4 documentation
collections — Container datatypes Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple. namedtuple() factory f
docs.python.org
[문제]
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
[느낀점]
카운터 2개, 플래그 2개를 두니 코드가 조건문으로 너무 복잡해졌다. 미리 설계할 때에는 왜 떠오르지 않았을까?
(코드가 길고 가독성이 떨어져 굉장히 불만스러웠다.)
[선배 개발자들의 코드 분석]
다른 분들은 어떻게 구현을 하셨는지 보고나서, 충격을 먹었다.
아직 진짜 멀었구나.... 부끄럽당