🌿Algorithm 126

✏️ [swea 5656] 벽돌깨기

1. 문제 swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 접근 방법 1. 만약 board에 벽돌이 하나도 존재하지 않는다면 -> 0 출력, 로직 끝 2. 만약 N개의 구슬을 떨어뜨렸다면 -> 현재 가장 적은 벽돌 갯수 출력, 로직 끝 3. 아직 N개까지 구슬을 안떨어뜨렸다면 -> 구슬 떨어뜨리기 고고 구슬 떨어뜨리기(DFS) 1. 1~W열 중 하나를 고른다. 2. 해당 열에서 가장 위에 있는 벽돌에 구슬이 떨어짐 3. 구슬이 떨어지면서 연쇄 반응이 한 ..

Algorithm/Python 2021.04.23

✏️ [swea 5658] 보물상자 비밀번호

1. 문제 swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 접근 방법 리스트를 회전할 수 있다면 쉽게 풀이할 수 있습니다. 아 그리고 16진수를 10진수로 바꾸는 방법도 알아야함 int(16진수로쓰여진숫자, 16)하면 됨 이와 동일하게 8진수, 2진수도 int(8진수로쓰여진숫자, 2)하면 됨 10진수를 2진수, 8진수, 16진수로 바꾸려면 각각 bin(숫자), oct(숫자), hex(숫자) 하면 됨 3. 코드 python3.5 T = int(input()..

Algorithm/Python 2021.04.23

✏️ [백준 1655] 가운데를 말해요

1. 문제 www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 2. 접근 방법 인풋을 받으면서 가운데를 확인하면 백퍼 시간초과 각이었고 접근 방법이 생각나지 않아 검색을 했다. 이 문제는 최대힙과 최소힙을 사용해서 풀어야하는 문제였다. 1. 최소 힙의 값들은 모두 최대 힙보다 크도록 하고 2. 최대 힙의 크기가 최소 힙의 크기보다 1 크거나 같도록 유지하며 값을 넣는다. 3. 값을 넣어준 후 최대 힙과 최소 힙의 top값을 비교해서 최소 힙의 t..

Algorithm/Python 2021.04.23

✏️ [백준 11286] 절댓값 힙

1. 문제 www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 2. 접근 방법 heapq를 써서 최대 힙을 구한 것과 동일한 방법으로 우선순위를 사용해주시면 됩니다. 절댓값이므로 우선순위는 abs(n)으로 해주심 됨다 ~! 3. 코드 python import sys, heapq N = int(input()) lst = [] for i in range(N): n = int(sys.stdin.readline()) if n: heapq.heapp..

Algorithm/Python 2021.04.23

✏️ [백준 11279] 최대 힙

1. 문제 www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 2. 접근 방법 heapq를 사용해서 접근해야하는데욧 heapq는 최소 힙이기 때문에 우선순위를 추가해줘서 만들어주면 됩니다. 우선순위는 heappush(lst, (-n, n)) 과 같이 인풋 된 숫자 값을 음수로 바꿔주면 ~! 됩니다. 그리고 출력할 때는 원래의 값인 1번 인덱스 값(n)을 출력하면 됩니다요 3. 코드 python import sys, heapq N = int(i..

Algorithm/Python 2021.04.23

✏️ [백준 1927] 최소 힙

1. 문제 www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 2. 접근 방법 최소 힙을 느낄 수 있는 문제입니다. 너무 오랜만에 써서 정리할 겸사겸사 사부작사부작 적어보겠습니다. 일단 heapq모듈을 사용했습니다. heapq를 사용하면 최소 힙을 만들 수 있습니다. heapq.heappush(원소를 추가할 대상 리스트, 추가할 원소) heapq.heappush(원소를 추가할 대상 리스트, 추가할 원소) 를 사용하면 힙에 원소를 추가할 수 있..

Algorithm/Python 2021.04.22

✏️ [백준 7568] 덩치

1. 문제 www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 2. 접근 방법 조합으로 해야할거같은데 실버라서 그냥 다 확인 해봤습니다.ㅎㅋ ..귀찮 .. 3. 코드 python N = int(input()) person = [1]*N inputs = [list(map(int, input().split())) for _ in range(N)] for i in range(N): for j in range(i+1, N): if i == j: contin..

Algorithm/Python 2021.04.22

✏️ [백준 1181] 단어 정렬

1. 문제 www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 2. 접근 방법 정렬하는 문제 lambda를 잘 이용하면 된다. lambda x: (len(x), x[:]) 정렬 조건이 여러개일 경우에는 key=lambda x: (첫번째 정렬 조건, 두 번째 정렬 조건, ...) 하면 되고 reverse하고 싶으면 sort함수의 인자로 reverse=True를 넣어주면된다. 그리고 중복되는 값은 한번만 출력이라 입력받을 ㄸㅐ set을 한 번 거쳐줬다 3..

Algorithm/Python 2021.04.22

✏️ [백준 1874] 스택 수열

1. 문제 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 2. 접근 방법 1. 인풋을 담을 리스트 2. pop, push할 숫자를 담은 range(N, 0, -1)리스트 3. stack 역할을 할 리스트 4. result를 담을 리스트 (수열을 만들 리스트) 이렇게 총 4개의 리스트가 필요하다 현재 보고 있는 숫자(stack)보다 클 경우 push하다가 원하는 숫자에서 pop..

Algorithm/Python 2021.04.22

✏️ [백준 2156] 포도주 시식

1. 문제 www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 2. 접근 방법 DP입니다. 각 날짜(i일)에 마실 수 있는 와인의 양을 P[i]라고 하고 해당하는 날짜까지 마실 수 있는 와인 양의 최댓 값을 D[i]라고 한다면, 3일 연속 마시면 안되니 i번째 날은 D[i] = D[i-1]이거나 D[i] = D[i-2] + P[i] 이거나 D[i] = D[i-3] + P[i-1] + P[i-2]가 됩니다. 이 세가지 경우 중 가장 큰 것을 고르면 됩니다. 3. 코..

Algorithm/Python 2021.04.22