목록알고리즘 (72)
짱이 될거야
1. 강원도에 위치한 생산공장 목록 출력하기 FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요. -- MySQL SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE "%강원도%" ORDER BY FACTORY_ID; -- Oracle SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE '%강원도%' ORDER BY FACTORY_ID; 2. 과일로 만든 아이스크림 고르기 상반기 아이스크림 총주문량이 3..

https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 이 문제는 Greedy로 푸는데, 문제에 함정이 있다. "S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다."라는 조건이 있는데, 사실상 A를 재배열하는 것이나 A, B를 모두 재배열하는 것이나 똑같다. 첫 번째. 오답 B를 재배열하지 않기 위해서 많이 돌아갔다.우선 B 배열에 대해서 B_sort, B_spare, B_index 배열들을 만들..

https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net from collections import deque import sys input = sys.stdin.readline def red_green_strong(si, sj): q = deque() q.append((si, sj)) visited[si][sj] = 1 while q: ci, cj = q.popleft() for di, dj in [(-1, 0), (1, 0), (0, -1),..

문제의 입력 조건이 1 이상 15 이하인 것으로 봐서 DP나 Memoization을 사용해야 한다. 나는 dp가 너무 어렵기 때문에 memoization을 썼다. 이 문제에는 규칙이 있는데, 처음에는 한 변의 점 개수가 2개, 그 다음에는 3개, 그 다음에는 5, 9, 17, ... 이렇게 된다. 여기서 보면 (다음 단계의 한 변의 점 개수) = (직전 단계의 한 변의 점 개수) * 2 - 1이다. 그리고 전체 개수는 (한 변의 점 개수)^2이다. 따라서 아래와 같이 코드를 짰고 테스트케이스 모두 만족했다. import sys N = int(input()) # 단계 start = 2 memo = [0] * (16) # 0 ~ 15 memo[0] = 2 for i in range(1, 16): memo[i..

완벽하게 파이썬적인 문제였고, 아래 두 문장으로 풀 수 있었다. N = int(input()) print(*sorted(list(set(list(map(int, input().split()))))))

https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 처음에는 아래처럼 단순하게 풀었고, 역시나 시간초과가 나왔다. in 함수에서 시간이 오래 걸리기 때문에 테스트 케이스 중 큰 값이 있다면 무조건 걸릴 것이다. import sys input = sys.stdin.readline N = int(input()) # N: 숫자 카드의 개수 cards = list(map(int, input().split())) # 숫자 카드..