728x90
반응형
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_1406_에디터2022-01-01 16:47:58https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 임의의 문자열을 입력하고, 커서를 조작하는 명령어, "L(왼쪽 한칸 이동), D(오른쪽 한칸 이동), B(왼쪽 문자 삭제), P $($라는 문자 왼쪽에 추가)"를 M개 입력한 결과를 출력해야 한다. 백준 알고리즘 강의 초급에 해당하는 문제인데, 시간제한 때문에 무척 애를 먹었다(이게 초급이라니). 시간 초과 # insert or slice 이용(결과: 시간 초과) import sys def L():..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_1874_스택 수열2021-12-30 11:45:58https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제를 이해하는데 시간이 오래 걸렸다! n개의 숫자를 입력 받아, 1부터 숫자에 해당하는 값 만큼 PUSH한다. 예를 들어 첫 번째 수가 4라면, 1, 2, 3, 4를 차례대로 PUSH하여 각각 '+' 출력! PUSH한 값이 4와 같아지면, 4를 POP하여 '-' 출력! 4 다음 수가 4 보다 작으면, 예를 들어 3..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_9093_단어 뒤집기2021-12-28 22:24:13https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net T개의 문장을 입력 받아, 문장별로 각 단어를 뒤집어 출력해야 한다. reversed 함수 이용(맞았습니다) # reversed 함수 이용(결과: 맞았습니다!) def make_rev(s): lst = s.split() rst = [] for i in lst: rst.append(''.join(reversed(i))) # join과 reversed 함수 이용 문자열 뒤집기 for i in ..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_10828_스택2021-12-27 22:19:01https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 5개의 명령어가 있고, 그 명령어 중 N개를 입력하면, 그에 맞는 결과가 순차적으로 최종 출력되어야 한다. globals 함수 이용(맞았습니다) # globals 함수 이용(결과: 맞았습니다!) stack = [] def push(n): stack.append(n) def pop(): if len(stack) == 0: rst.append(-1) else: rst.append(s..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_18870_좌표 압축2021-12-26 11:22:42https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net N개의 숫자를 작은 숫자 부터 0부터 시작하는 순위를 매겨야 한다. 같은 숫자는 같은 순위이다. 1차 시도(시간 초과) # 이중 for문(결과: 시간 초과) import sys N = int(sys.stdin.readline()) ipt = list(map(int, sys.stdin.readline().split())) idx = list(sort..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_10814_나이순 정렬2021-12-25 15:44:04https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net N명의 회원을 정렬해야 한다. 나이순으로 정렬하고, 나이가 같으면 먼저 입력된 순으로 정렬한다. 1차 시도(틀렸습니다) # 1차 시도(결과: 틀렸습니다) import sys N = int(sys.stdin.readline()) ipt = [] id = 0 # 나이가 같을 경우 기준으로 삼을 가입순서 id를 부여했다. for i in range(N): ipt.append(sys.stdin.readline..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_1181_단어 정렬2021-12-24 14:13:01https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net N개의 알파벳 소문자 문자열을 길이가 짧은 것부터, 길이가 같으면 사전 순으로 정렬해야한다. 시간 초과 # 1차 시도(결과: 시간 초과) import sys N = int(sys.stdin.readline()) ipt = [] for _ in range(N): ipt.append(sys.stdin.readline().strip('\n')) # strip() 메서드 이용하여 '\n' 제거..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_11651_좌표 정렬하기 22021-12-23 11:55:05https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net x, y 좌표의 점이 N개 있다. 좌표 y를 기준으로 점을 오름차순 정렬해야한다. 이때 y가 동일하면 x로 순서를 결정한다. 11650번 좌표 정렬하기 1은 x가 우선이라 sort 함수의 사용만으로 문제를 해결 할 수 있었다. 반면 다소 까다로워진 문제다. 시간 초과 # 1차 시도(결과: 시간 초과) import sys # xy를 yx로 순..
728x90
반응형