본문 바로가기

분류 전체보기

(171)
[프로그래머스][Python] 더 맵게 문제를 정리해보자. 모든 음식의 지수를 K이상으로 만들어야 한다. 하나라도 K이상이 아니라면, 2개의 음식을 섞어서 새로운 음식을 만든다. 새로운 음식 = 가장 맵지 않은 음식의 지수 + (두 번째로 맵지 않은 음식의 지수 X 2) 모든 음식의 지수가 K라면 그만한다. 음식이 1개 남았는데, K보다 작다면 -1을 출력한다. Heap을 이용했다. import heapq def solution(scoville, K): answer = 0 heap = [] for num in scoville: heapq.heappush(heap, num) check = heap[0] while check < K: if len(heap) < 2: return -1 x = heapq.heappop(heap) y = heapq.h..
[프로그래머스][Python] 다리를 지나는 트럭 입력은 3개가 주어진다. bridge_length : 다리에 올라갈 수 있는 트럭 수 weight : 다리가 견딜 수 있는 무게 truck_weights : 트럭별 무게 문제는 '모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는가?'이다. 아래처럼 이해하면 편하다. bridge_length는 다리의 길이이다. 다리의 길이가 N이라면, N대가 올라갈 수 있다. 그리고 1대만 지나가는데 N초가 걸린다. 그리고 다리에서 완전히 나가야지 건넜다고 할 수 있다. [7, 4, 5, 6]를 스택형태로 이동시켜보자. 0 : [x,x] [] (시작) 1 : [x,7] [] 2 : [7,x] [] 3 :[x,4] [7] 4 : [4,5] [7] 5 : [5,x] [4,7] 6 : [x,6] [5,4,7] 7 : [6,x]..
[대회][BOJ][INU 코드페스티벌 2020] D번 20365 : 블로그2 문제를 정리해 보자. 문제를 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한다. 각 문제를 칠할 때 아래와 같은 과정을 한 번의 작업으로 수행한다. 1. 연속된 임의의 문제들을 선택한다. 2. 선택된 문제들을 전부 원하는 같은 색으로 칠한다. 단순히 위에서 아래로 칠해보자. 횟수 번호 1 1,2 2 3 3 4 4 5 5 6,7 6 8 최소한의 작업 횟수로 수행해보자. 이를 구현해야 한다. 횟수 번호 1 1,2,3,4,5,6,7 2 3 3 5 4 8 어떻게 구현해야 할까? 아래 방법처럼 하면 된다. (아래는 다른 예시이다.) 연속된 동일 알파벳은 하나의 알파벳으로 본다. 즉, 중복을 제거한다. (중복이 제거되었기 때문에 R과 B가 교차로 있게 된다.) R의 개수와 B의 개수 중, 더 큰 것은 한 ..
[대회][BOJ][INU 코드페스티벌 2020] D번 20364 : 부동산 다툼 문제를 정리해보자. 1. 루트 땅의 번호는 1이다. 2. 어떤 땅의 번호가 K라면, 왼쪽 자식 땅의 번호는 2 x k, 오른쪽 자식 땅의 번호는 2 x (k + 1)이다. 1. 오리들은 한 줄로 대기시킨다. 맨 처음 오리들은 1번 땅에 있다. 2. 오리들이 서 있는 순서대로 원하는 땅을 가지도록 한다. 3. 오리가 원하는 땅까지 가는 길에 이미 다른 오리가 점유한 땅이 있다면 지나가지 못한다. 이 경우 처음 마주치는 점유된 땅의 번호를 출력한다. (지나가는 길에는 오리가 원하는 땅도 포함이다.) 4. 오리가 원하는 땅까지 간다면 0을 출력한다. 오리의 번호가 아래 식으로 루트 노드까지 간다. import sys input = sys.stdin.readline N, Q = map(int, input().s..
[대회][BOJ][INU 코드페스티벌 2020] C번 20363 : 당근 키우기 문제를 정리해보자. 1. 햇빛 1번은 온기 +1 2. 햇빛 10번은 온기 +10, 수분 -1 3. 물 1번 수분 +1 4. 물 10번 수분 +10, 온기 -1 수분과 온기는 음수가 될 수 없다. x, y = map(int, input().split()) if x < y: x, y = y, x print(x + (y // 10) + y) # y < x 이 문제는 처음에 얼마나 많은 햇빛 혹은 물은 주느냐가 관건이다. 예를 들어, 온기=10, 수분=10을 만들어야 한다고 하자. 최소한의 횟수로 만든다면 아래처럼 된다. 총 21회이다. 횟수/이름 온기 수분 1 0 0 2 10 0 3 9 10 4 10 10 하지만 다르게 생각해보자. 햇빛을 충분히 주어서 온기가 10보다 작은 상태를 만들지 않는다면 어떨까? 횟..
[대회][BOJ][INU 코드 페스티벌 2020] 후기 며칠 전 INU 코페 2021 대회에 참가 신청했고, 오늘 INU 코페 2020 문제를 풀어봤다. A~H번, 총 8문제가 출제되었다. 식사, 쉬는 시간까지 포함해서 약 6시간 풀었다. A, B, C, D, E번은 맞았고, F번은 틀렸다. G, H번은 접근하지 못했다. C, E는 쉬운 문제였다. 하지만 단순하게 생각하지 못하는 바람에 오래 걸렸다. B번은 시간 초과가 걱정되는 풀이로 해결했다. 왜 시간 초과가 안 났는지는 더 생각해볼 문제 같다. F번은 백 트래킹을 이용해서 풀었다. 하지만 시간 초과 문제를 해결하지 못해서 틀렸다. G, H번은 나중에 실력이 되면 풀어야겠다. (오늘 푼 문제 풀이는 따로 올렸다.) 교내 알고리즘 대회.. 아직 실력이 많이 부족하지만, 경험을 쌓기 위해 나간다. 선배들을 제..
[AWS] SSH 접속 종료해도, 서버는 돌아가게 법 항상 SSH에 접속하고 있을 수는 없다. 노트북을 꺼야 할 때가 있기 때문이다. SSH 접속을 종료해도, 서버는 돌아가게 하는 방법을 알아보자. Linux(Ubuntu) 명령어 중에 screen을 알아보자. screen은 백 그라운드에 가상의 터미널을 생성한다. 그리고 필요할 때마다 포어 그라운드 즉, 맨 앞으로 가져온다. 명령어는 아래와 같다. # 생성 screen -S [이름] # 목록 확인 screen -ls # 재접속 screen -r [이름] 아래 블로그를 참고했습니다. https://minimin2.tistory.com/123 [Linux/Ubuntu] screen 사용법 [Linux/Ubuntu] screen 사용법 screen이란? 사용방법 screen 사용 명령어 screen 세션 접속 ..
[AWS] EC2에서 Django 서버 접속하기 로컬에서는 아래 명령어로 127.0.0.1:8000에 접속하면 된다. python3 manage.py runserver 하지만 AWS에서는 Public DNS로 접속해야 한다. 아래 명령어를 이용하자. python3 manage.py runserver :8000 이후에는 Public IP나 Public DNS로 접근할 수 있다. 다만, 인바운드 규칙에서 포트를 열어주어야 한다.
[프로그래머스][Python] 프린터 순서도가 높은 인쇄 문서부터 인쇄하면 된다. 요청한 문서가 몇 번째로 인쇄되는지 구하는 문제이다. # A, B, C, D # 2 1 3 2 import collections def solution(priorities, location): priorities_cnt = dict((collections.Counter(priorities).items())) priorities_idx = [(num, idx) for idx, num in enumerate(priorities)] location = (priorities[location], location) answer = 0 while priorities_idx: check = priorities_idx[0][0] if check == max(priorities..
[자료구조] 스택/큐 [Stack/Queue] 스택[Stack] 스택은 LIFO[Last In First Out]이다. 나중에 넣은 데이터가 먼저 반환되는 데이터 구조이다. push : 맨 위에 데이터 이미지 출처 파이썬으로 스택을 구현해보자. 큐(Queue) 큐는 FIFO[First In First Out]이다. 먼저 넣은 데이터가 먼저 반환되는 데이터 구조이다. 이미지 출처