알고리즘

Python/알고리즘 문제풀이

[프로그래머스][Python] Lv2. 메뉴 리뉴얼

2021 KAKAO BLIND RECRUITMENT 문제풀러 바로가기👇👇👇👇👇👇 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 설명 위 문제는 단순 구현 문제로 조합(itertools.combinations)을 사용해 모든 메뉴의 경우 구한다. 그리고 collections.Counter 라이브러리를 이용해 가장 주문이 많았던 조합을 구해 코스요리에 추가하면 된다. 논리는 간단하다. 이 문제의 주의사항은 ..

Python/알고리즘 문제풀이

[프로그래머스][Python] Lv2. 게임 맵 최단거리

찾아라 프로그래밍 마에스터 문제 문제 풀러 바로가기 👇👇👇👇👇👇 https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 문제내용은 위 링크 참고바람 문제풀이 위 문제는 BFS(너비 우선 탐색)을 이용하면 아주 쉽게 풀 수 있는 문제이다. queue(deque 라이브러리 사용)를 이용해 지도의 좌표를 저장하고 차례대로 좌표를 꺼내 퍼트려나가면 된다. 방향은 위, 아..

CS/자료구조

[자료구조] 자료구조와 알고리즘

01 자료구조와 알고리즘 1. 자료구조의 기본 개념 1-1. 프로그램 vs 프로세스 vs 프로세서 (Program vs Process vs Processor) 프로그램(Program) 이란 지정된 작업을 수행하는 명령 그룹이다. 즉, 실행될 명령 그룹을 코드로 정리해놓은 파일의 집합이다. 반면, 프로세스(Process) 는 정해진 목적을 수행하기 위해 메모리에 나열된 작업의 목록이다. 다르게 말하자면 실행 중인 프로그램을 의미한다. 프로그램과 프로세스를 구별하는 방법은 다음과 같다. 작업의 과정이 파일이 정리되어 있다면 프로그램 , 메모리(RAM)에 적재되어 실행 중이거나 대기 중이면 프로세스 라고 생각하면 된다. 또, 프로세서(Processor) 는 프로세스와는 다른 개념으로, 하드웨어 측면에서는 컴퓨..

Python/알고리즘 문제풀이

[백준][파이썬] 9184번 신나는 함수 실행

백준 온라인저지 9184번 신나는 함수 실행 문제풀러 바로가기👇👇👇👇👇👇 https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 문제풀이 문제에 점화식이 주어지기 때문에 그것을 그대로 사용하면 된다 다만 if dp[a][b][c]: return dp[a][b][c] 를 통해 재귀함수가 반복되지 않도록만 하자. dp = [[[0]*21 for _ in range(21)] for _ in range(21)] def w(a, b, c): if a 20: ret..

Python/알고리즘 문제풀이

[백준][파이썬] 1654번 랜선 자르기

백준 온라인저지 1654 랜선 자르기 문제풀러 바로가기👇👇👇👇👇👇 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제풀이 이 문제는 이분탐색을 이용해야하는 문제이다. start는 1로 잡고, 랜선 중 최대길이를 end로 정한 다음 이분 탐색을 하면 다음과 같다. 첫 번째 mid는 402cm이다. 402cm로 자르면 랜선이 5개 밖에 나오지 않기 때문에 mid를 mid = (start + mid - 1) // 2 로..

Python/파이썬 함수

[파이썬] itertools 사용하는 법 - 경우의 수

1. 경우의 수 permutations() - 순열 순열은 순서를 고려해서 뽑는 경우의 수다. nPr 로 쓰이는데 이를 풀어서 말하면 n개 중 순서를 고려하여 r개를 뽑는 것을 말한다. -예시 num = [2,1,3,4,1] result = list(itertools.permutations(num, 2)) - 결과값 >> [(2, 1), (2, 3), (2, 4), (2, 1), (1, 2), (1, 3), (1, 4), (1, 1), (3, 2), (3, 1), (3, 4), (3, 1), (4, 2), (4, 1), (4, 3), (4, 1), (1, 2), (1, 1), (1, 3), (1, 4)] 1이 2개 있기때문에 중복된 결과가 나온다. combinations() - 조합 조합이라고 하면 nC..

gakko
'알고리즘' 태그의 글 목록