Python
-
[Python] BOJ 17298 : 오큰수코딩테스트/백준 2024. 10. 19. 09:42
https://www.acmicpc.net/problem/17298생각 중스택이 비어 있을 때, 인덱스를 넣어줘 전 값을 저장하자.스택이 비어 있지 않을 때, 저장된 인덱스 값의 NGE[index] 와 다음 값인 NGE[i]를 비교하자.만약 NGE[i] 가 더 크다면 stack을 pop하고 result[index] 에 NGE[i] 값을 넣어주자. 요구사항시간 제한 1초 N 보자마자 아 2중 for문은 안되겠구나. 메모리 제한 512MB 특정 원소 보다 오른쪽에 있으면서 가장 큰 수 중에 가장 왼쪽에 있는 수를 구하는 프로그램을 만들 것. 설계 수열의 크기 N 을 입력 받는다. 사용자로 부터 수열을 입력 받는다.결과를 저장할 리스트를 초기화 한다. [-1] * N stack = [] : index 를 ..
-
[Python] BOJ 1158 : 요세푸스 문제코딩테스트/백준 2024. 10. 17. 08:05
요구사항 시간 제한 2초, N의 크기도 작아 넉넉하다. 메모리 제한 또한 마찬가지N, K 가 주어질 때 요세푸스 순열을 구하는 프로그램을 출력하라. 설계[1, 2, 3, 4, 5, 6, 7] 사람이 앉아 있다고 했을 때,1, 2번 사람을 7번 뒤로 넣는다. [3, 4, 5, 6, 7, 1, 2] []3번사람을 뺄 수 있다. [4, 5, 6, 7, 1, 2] [3]4번, 5번 사람을 2번 사람 뒤에 넣는다. [6, 7, 1, 2, 4, 5] [3]6번 사람을 뺄 수 있다. [7, 1, 2, 4, 5] [3, 6]위와 같이 Queue의 성질을 이용해서 문제를 풀 수 있다. 추가로 순열을 출력할 때, replace함수와 join함수 중 시간 복잡도가 낮은 걸 택하고 싶어 고민했었다. join 함수는..
-
[Python] BOJ 5397 : 키로거코딩테스트/백준 2024. 10. 16. 08:25
https://www.acmicpc.net/problem/5397 https://studyiwthme.tistory.com/169 요구사항시간제한 1초 L이 1,000,000 이므로 테스트 케이스가 몇 개라고 말이 없어서.. 이중 for문을 최대한 피하려다가 그냥 이중 for문을 사용하기로 생각했다.메모리제한 256MB 역시 걱정할 정도는 아니다.알파벳, 숫자, 백스페이스, 화살표가 주어졌을 때, 최종 문자열을 출력해라.설계testCase 를 입력 받는다.. 사용자로 부터 입력을 받는다.커서 기준 왼쪽과 오른쪽을 나누기 위해서 2개의 리스트를 초기화한다. 입력 받는 문자열에 대해 for문을 돌린다. 각 케이스 별로 if문을 사용해서 나눈다. "커서 기준 왼쪽이 뭘 있어야 커서를 움직을 수 있잖아요. 그래..
-
[Python] BOJ 6198 : 옥상 정원 꾸미기코딩테스트/백준 2024. 10. 15. 09:04
https://www.acmicpc.net/problem/6198요구사항시간 제한 1초빌당의 개수가 80,000개 이중 for문으로 확인해버리면 시간초과 가능성이 높다. 메모리제한 128MB 관리인들이 옥상 정원을 확인할 수 있는 총 빌딩의 수를 구해라.설계이중 for문으로 구현하면 편하겠다. 더 이상 생각이 안난다. 갇혀버렸다. 위와 같은 방식을 이해하거나 실제로 건물을 stack 에 넣어보면서 가시적으로 비교하면 좋다.구현import sysinput = lambda: sys.stdin.readline().rstrip()# 건물의 개수 입력N = int(input())# 각 건물의 높이를 입력받음building_heights = [int(input()) for _ in range(N)]stack = [..
-
[Python] BOJ 11328 : Strfry코딩테스트/백준 2024. 10. 11. 08:47
요구사항시간 제한 2초 : 넉넉할 것이라 생각했다.. N**2 이면 10,000,000 이면 괜찮은 거 같은데 메모리제한 256MB 항상 넉넉하다.strfry 함수를 적용하여 얻어질 수 있는 지 판단. 설계 1두 문자열을 입력받는다. 이중 for문을 돌려 두 문자열을 비교한다. 같으면 count += 1 문자열의 길이와 count 가 같다면 둘은 같다. 구현 1def is_same(a, b): len_a = len(a) count = 0 for alpha in b: for i in range(len_a): if a[i] == alpha: count += 1 if count == len_a: return "..
-
[Python] BOJ 13300 : 방배정코딩테스트/백준 2024. 10. 11. 08:22
요구사항시간 제한 2초 N과 K가 각각 1000메모리 제한 512MB 조건에 맞게 모든 학생을 배정하기 위해 필요한 방의 최소 개수설계 1파이썬에서 제공하는 모듈을 불러와서 사용해야겠다.combination 으로 시작. 조합 중 같다면 count 구현 1from itertools import combinationsN, K = map(int, input().split())student_list = [tuple(map(int, input().split())) for _ in range(N)]combi_student_list = list(combinations(student_list, K))count = 0for combi in combi_student_list: if combi[0] == combi[1..
-
[ Python] BOJ 3273 : 두 수의 합코딩테스트/백준 2024. 10. 10. 08:13
https://www.acmicpc.net/problem/3273요구사항시간 제한 1초 지만 N O(N**2) 는 힘들다. 메모리 제한 128M지만 100,000이라 리스트를 너무 남발하면 초과할 것. 설계 1combinations 모듈을 불러와서 2개의 조합을 구한다.자연수 x와 조합의 합이 같은 지 비교하여 count 한다.구현 1import sysfrom itertools import combinationsinput = lambda: sys.stdin.readline().rstrip()N = int(input())n_list = tuple(map(int, input().split()))compare_num = int(input())count = 0for combi in combinations(n_l..
-
[Python] BOJ 10808 : 알파벳 개수코딩테스트/백준 2024. 10. 9. 08:55
요구사항시간 제한 1초 & 메모리 제한 256MB알파벳의 개수가 26개이니, 하고 싶은 거 다 해 소문자로 이루어진 문자열의 각 알파벳이 몇 개인지 구하는 프로그램.설계if문이나 case문으로 하나하나 작성하기 싫었다. 메모이제이션을 이용, 필요한 정보만 저장하면 된다.사용자로부터 입력을 받는다. (word)필요한 정보를 저장할 리스트를 0으로 초기화한다. 문자열은 리터럴이기 떄문에, for alpha in word: 리스트의 위치에 넣어준다. -> ord(alpha) & ord('a') 리스트[location] 에 1를 더해준다. 구현word = input()dp = [0] * 26 # 알파벳의 개수 for alpha in word: location = ord(alpha) % ord('a') ..