2021. 2. 2. 02:15ㆍ알고리즘/파이썬
명령 프롬프트 [1032]
백준 - https://www.acmicpc.net/problem/1032
문제
-
시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다.
-
이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.
-
dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다.
-
예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.
-
- 이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다.
-
패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다.
-
그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
입력
-
첫째 줄에 파일 이름의 개수 N이 주어진다.
-
둘째 줄부터 N개의 줄에는 파일 이름이 주어진다.
-
N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다.
-
파일이름은 알파벳과 "." 그리고 "?"로만 이루어져 있다.
출력
- 첫째 줄에 패턴을 출력하면 된다.
예시
풀이과정
-
명세서에서 입력 길이가 똑같지만 이 풀이과정은 길이가 같지 않을 경우도 산정했다.
-
비교 대상을 가장 짧은 단어로 정한다.
-
미리 정답을 담을 수 있는 빈리스트를 만든다.
-
가장짧은 단어와 가장 긴단어의 길이 차이만큼 정답리스트의 끝에 '?'를 추가 해준다.
-
가장 짧은 단어를 기준을 잡고 나머지 단어들과 한글자씩 비교를한다.
-
다르면 '?'를 추가하고 같으면 짧은 단어의 값을 넣는다.
느낀점
- 명세서를 잘 읽자 입력값의 길이가 같은것을 못봤다면 이렇게 하지 않았을 것이다.
- 짧은 단어를 기준으로 비교를 시작한다는 생각을 가지기에 시간이 좀걸렸다.
- 더 간단하게 할수있을 것이라고 생각한다. 좀더 연습하자
'알고리즘 > 파이썬' 카테고리의 다른 글
성 지키기 [1236] (0) | 2021.02.02 |
---|---|
단어 공부 [1157] (0) | 2021.02.02 |
직사각형에서 탈출 [1085] (0) | 2021.02.02 |
더하기 사이클[1110] (0) | 2021.01.31 |
부호 [1247] (0) | 2021.01.30 |