🌿Algorithm/Python 116

✏️ [백준 1932] 정수 삼각형

1. 문제 www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 2. 접근 방법 dp문제다. 삼각형이 아니라 2차 배열로 생각해보면 input의 경우 0 0 0 0 0 0 0 0 0 0 이런 형상이다. 그럼 얘를 좌표로 나타내면 ([열(x), 행(y)]으로 나타냈습니다.) [0, 0] [0, 1] [1, 1] [0, 2] [1, 2] [2, 2] [0, 3] [1, 3] [2, 3] [3, 3] [0, 1]까지의 합은 [0, 0]과 [0, 1]을 더한 값 [1, 2]까지의 합은 [0, 1]과 [1, 1] 둘 중 더 큰 값과 [1, 2]..

Algorithm/Python 2021.04.27

✏️ [swea 5650] 핀볼 게임

1. 문제 swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 접근 방법 시뮬이라 문제에 나온대로 진행하면 된다. 유의해야 할 점은 1. 웜홀이나 블랙홀을 만나지 않는 한 현재 방향을 유지하면서 계속 직진 2. 핀볼이 웜홀에 빠지면 동일한 숫자를 가진 다른 반대편 웜홀로 빠져나옴. 진행 방향 유지 3. 블랙홀 만나면 끝 (return) 4. 처음 위치로 돌아오면 끝(return) 5. 점수 = 벽이나 블록에 부딪힌 횟수 (웜홀 통과는 점수에 반영되지 않는다)..

Algorithm/Python 2021.04.24

✏️ [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