본문 바로가기
SMALL

Coding Test22

백준 21610. 마법사 상어와 비바라기 - 골드 5 21610번: 마법사 상어와 비바라기 (acmicpc.net) 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 삼성 최신 기출은 확실히 구현이 많이 나온다. 구현 문제는 문제만 잘 읽고 따라가면 답이 나오는 듯 하다. 그런데, 테스트케이스에 속아 히든케이스에서 시간초과가 발생할 위험이 있다. 1. 항상 입력값 조건을 잘 따지자. 2. 아래와 같이 x도 리스트, list도 리스트 일 때 in을 사용한 방식은 절대 절대 사용하면 안된다. list = [[0,0], [0,1], [1,0], [1,1]] x =.. 2021. 10. 15.
백준 1629. 곱셈 - 실버 1 1629번: 곱셈 (acmicpc.net) 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 분할정복을 이용한 거듭제곱 구하기인 줄 알았다. 나름 도전해보면서 DP 문제처럼 mem이라는 리스트도 사용해보았으나 실패한 흔적이다. import sys sys.stdin = open("sample.txt", "r") A,B,C = map(int, sys.stdin.readline().split()) mem = dict() mem[1] = A def n_square(n, k): if k not in list(mem.keys()): mem[k // 2] = n_square(n, k //.. 2021. 8. 27.
백준 11729. 하노이탑 - 실버 2 하노이탑 알고리즘 A, B, C 기둥이 있고, A의 원반을 전부 C로 옮기는 것이 목표 1. n-1 개의 원반을 B로 옮긴다. 2. A에 남은 원반을 C로 옮긴다. 3. B에 있는 n-1 개의 원반을 C로 옮긴다. * n이 1일 때에는 목적지로 바로 이동시켜준다. import sys sys.stdin = open("sample.txt", "r") n = int(sys.stdin.readline()) stick = [] stick += [i for i in range(n,0,-1)], [],[] def hanoi(n, A, B, C): # A에서 C로 이동시키고, B를 보조로 사용 if n == 1: print(f'{A} {C}') # C.append(A.pop()) return hanoi(n-1, A, .. 2021. 8. 12.
백준 10989 - 실버5 10989번: 수 정렬하기 3 (acmicpc.net) 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 아이디어 1. 카운팅 정렬로 풀라고 해서 했는데 메모리 초과 문제가 발생한다. 2. 8MB 제한때문에 리스트를 두 개 이상으로 생성할 수 없다... 3. 최대 크기 k+1만큼의 카운트 리스트를 만들고, 그 값들을 순서대로 출력하면 된다. import sys sys.stdin = open("sample.txt", "r") n = int(sys.stdin.readline()) k = 10000 count_list = [0]*(k+.. 2021. 8. 11.
[Advanced] 12. NP-Complete - 이론편 P와 NP P : 다항식 시간 알고리즘이 존재하는 모든 결정 문제의 집합 NP : 다항식 시간 비결정적 알고리즘으로 해결할 수 있는 모든 결정 문제의 집합 어떤 문제들이 어려운 문제일까요? 다항식 시간이 필요하면 현실적인 시간 지수시간 이상이 필요하면 비현실적인 시간으로 "어려운 문제"에 해당 → 다루기 힘든(Intractable) 문제 문제의 분류 다항식 시간 알고리즘을 찾은 문제 다루기 힘들다고 증명된 문제 다루기 힘들다고 증명되지 않았고, 다항식 시간 알고리즘도 찾지 못한 문제 1. 다항식 시간 알고리즘을 찾은 문제 다항식 시간이 아닌 알고리즘도 있으나, 다항식 시간 알고리즘을 찾은 경우 정렬문제 O(nlogn) P(Polynomial) 문제 집합 정렬된 배열 검색 O(logn) 행렬 곱셈 O(n^.. 2021. 8. 5.
[Advanced] SW 문제해결 응용 - 구현 - 완전검색 1. 완전 검색 - 최적해 문제 많은 종류의 문제들이 특정 조건을 만족하는 경우나 요소를 찾는 것 완전 검색 알고리즘 → 중복 제거 → 개선된 알고리즘 완전 검색 알고리즘 → 분할정복, 동적 계획법 ex) 베이비진 문제 2. 조합적 문제 - 경우의 수 문제 순열 : 서로 다른 것들 중 몇 개를 뽑아서 한 줄로 나열하는 것 다수 문제들이 순서화된 요소들의 집합에서 최선의 경우를 찾는 것 순회 외판원 문제 (Traveling Salesperson Problem) 방문할 도시가 n개라면 가능한 모든 경로는 n! 만큼 존재 → 12이상부터 폭발적 증가! 존슨-트로터 알고리즘 : 교환을 통해 순열 생성 조합 : 서로 다른 n개의 원소 중 r개를 순서 없이 골라낸 것 재귀 호출을 이용한 조합 생성 알고리즘 부분집합.. 2021. 8. 5.
LIST