전체 글

알고리즘(백준)

[알고리즘/문자열] 9996번 : 한국이 그리울 땐 서버에 접속하지 - python

링크 : https://www.acmicpc.net/problem/9996 9996번: 한국이 그리울 땐 서버에 접속하지 총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다. www.acmicpc.net 문제 소요시간: 30분 20초 설계하기(접근방법) 1. 입력받기 입력받을 숫자와 입력받을 첫 패턴을 입력받는다 2. 구현하기 패턴의 앞부분을 front로 저장하고 패턴의 끝부분을 end로 저장한다 그 후 입력받는 문자가 front로 시작하는지 end로 끝나는지 검사한다 입력받는 문자가 패턴보다 짧은 경우를 예외 처리해준다 3. 출력하기 DA혹은 NE를 출..

알고리즘(백준)

[알고리즘/문자열] 20310번 : 타노스 - python

링크 : https://www.acmicpc.net/problem/20310 20310번: 타노스 어느 날, 타노스는 0과 1로 이루어진 문자열 $S$를 보았다. 신기하게도, $S$가 포함하는 0의 개수와 $S$가 포함하는 1의 개수는 모두 짝수라고 한다. 갑자기 심술이 난 타노스는 $S$를 구성하는 문자 www.acmicpc.net 문제 소요시간: 20분 16초 설계하기(접근방법) 1. 입력받기 문자열을 입력받는다 2. 구현하기 사전순의 정의를 알아보면 문제를 접근하기 쉽다 즉 0은 앞에 있을 수록, 1은 뒤에 있을 수록 사전 순 앞에 배치된다. 다른 의미로는 1을 앞에서 부터 삭제하고, 0은 뒤에서 부터 삭제하면 되는 것이다 파이썬의 index 함수는 앞에서부터 인자를 탐색해서 인덱스의 위치를 반환해..

알고리즘(백준)

[알고리즘/문자열] 1213번 : 팰린드롬 - python

링크 : https://www.acmicpc.net/problem/1213

알고리즘(백준)

[알고리즘/문자열] 2607번 : 비슷한 단어 - python

링크 : https://www.acmicpc.net/problem/2607 2607번: 비슷한 단어 첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이 www.acmicpc.net 문제 소요시간: 27분 (실패) 설계하기(접근방법) 1. 입력받기 비교할 첫 문자를 입력받는다 2. 구현하기 처음에는 전부 구현하다가 시간을 지나치게 많이 사용했다 딕셔너리를 만들어서 알파벳을 하나하나 전부 비교하고 키와 값을 활용해 만드려니 소요가 많이 들었다 다른 사람의 풀이를 봤다 입력받은 단어의 글자를 활용해서 첫 단어를 지워나가면 쉽게 풀 수 있다 즉 DOG가 첫 단어고 입력받..

알고리즘(백준)

[알고리즘/문자열] 1515번 : 수 이어 쓰기 - python

링크 : https://www.acmicpc.net/problem/1515 1515번: 수 이어 쓰기 세준이는 1부터 N까지 모든 수를 차례대로 공백없이 한 줄에 다 썼다. 그리고 나서, 세준이가 저녁을 먹으러 나간 사이에 다솜이는 세준이가 쓴 수에서 마음에 드는 몇 개의 숫자를 지웠다. 세준 www.acmicpc.net 문제 소요시간: 37분 실패 설계하기(접근방법) 1. 입력받기 문자열을 입력받는다 2. 구현하기 처음에 순서를 고려하지 않고 각 숫자의 개수를 세는 방식으로 접근해서 실패했다 num을 증가시키면서 s의 앞자리와 비교를 하고 같다면은 s의 앞자리를 잘라내는 방식으로 풀 수 있다 즉 1245라면 num = 1 == s[0] = 1 이니 s = s[1:] 즉 245로 바꿔준다 그 후 num ..

알고리즘(백준)

[알고리즘/문자열] 20920번 : 영단어 암기는 괴로워 - python

링크 : https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net 문제 소요시간: 37분 20초(실패) 설계하기(접근방법) 1. 입력받기 2. 구현하기 3. 출력하기 코드(출력) 1 얻어갈 부분 1. 데이터의 중복이 상관없고, 메모리가 충분한 경우 딕셔너리를 사용하는 것이 바람직하다. 딕셔너리의 경우 특정한 키를 찾아서 연산하는 코스트가 O(1)에 가깝기 때문에 연산이 굉장히 빠르게 이..

알고리즘(백준)

[알고리즘/문자열] 1032번 : 명령 프롬프트 - python

링크 : https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 문제 소요시간:7분 20초 설계하기(접근방법) 1. 입력받기 문자열의 개수와 문자열을 입력받는다 2. 구현하기 길이가 같기 때문에 쉬운 편이다 우리는 교집합을 구한다고 생각하면 된다 즉 교집합은 그대로 문자를 출력하고 교집합이 아닌 문자는 '?'로 치환한다 처음 문자열 하나를 입력받고 그 다음 문자열과 비교를 한다 여기서 주의해야 할 점은 문자열은 directory[3] = '?" ..

알고리즘(백준)

[알고리즘/문자열] 2870번 : 수학숙제 - python

링크 : https://www.acmicpc.net/problem/2870 2870번: 수학숙제 종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차 www.acmicpc.net 문제 소요시간: 32분 10초 설계하기(접근방법) 1. 입력받기 문자열을 입력받는다 2. 구현하기 문자열을 기준으로 숫자를 구분해준다 숫자가 연속될 때까지 temp 리스트에 append해주고 문자열을 만나거나 문자열이 끝나는 경우 앞의 0을 제거하고 join을 통해 temp 리스트내 원소를 숫자 리스트에 넣어준다 리스트의 요소들을 int로 변환해준 후 리스트를 오름차순 정렬해준다 3. 출력하기 ..

되다
코드테일