목록알고리즘 (71)
우당탕탕 개발일지

💡문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡문제 분석 요약정렬과 해싱을 이용하는 문제1. 장르 정렬: 재생횟수가 가장 많은 장르순으로 정렬2. 장르 내 노래 정렬: 하나의 장르 내에서 재생횟수가 가장 많은 노래순으로 정렬해서 노래 2개 선택, 재생횟수가 동일하면 고유번호가 작은 노래가 앞에 오도록 정렬3. 장르별로 가장 많이 재생된 노래를 두개씩 뽑아 베스트앨범에 넣기 💡알고리즘 설계1. 장르별 재생횟수 정보를 담은 딕셔..

💡문제 링크https://www.acmicpc.net/problem/1920 💡문제 분석 요약N개의 정수가 주어졌을 때(A), 특정 정수가 A 안에 있는지 판단하는 문제특정 정수가 A 안에 존재하면 1을, 존재하지 않으면 0을 출력한다.예를 들어, A = [1, 2, 4, 8, 9, 10]일 때, 9는 A 안에 있으므로 1을 출력, 7은 A 안에 없으므로 1을 출력 💡알고리즘 설계처음에 단순히 앞에서부터 차례대로 순서 탐색하는 일차원적인 생각을 했다."당연히" 런타임 에러가 떴다. ( 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. )그래서 '아 그냥 무작정 탐색은 안되겠구나. 이진 탐색을 해야겠다' 라고 생각했다.이진 탐색은 여러 번 공부해서 개념이 머리에 잡혀있던 터라 그냥 코드..
앞으로 문제를 어떻게 풀어야할지, 순서를 시스템화하기 위한 기록1. 가장 작은 문제로 쪼개본다2. 의사 코드를 써서 내 아이디어를 확립한다.3. 인풋값을 잘 받아들이는지 확인한 후, 연습할 때 사용할 테스트 케이스를 미리 만들고 코드 짜기 시작한다.4. 중간중간 print 함수를 통해 내가 구상한대로 코드가 잘 작동되고 있는지 확인한다.

💡문제 링크https://www.acmicpc.net/problem/2630💡문제 분석 요약여러 개의 정사각형 칸으로 이루어진 정사각형 모양의 종이가 있다.각 정사각형은 파란색(1) 혹은 흰색(0)아래의 규칙에 따라 종이를 자른다.1. 모두 같은 색으로 칠해져 있지 않으면 4등분으로 자르기2. 모두 같은 색으로 칠해져있거나 하나의 정사각형 칸으로 이루어져 있어서 더 이상 4등분 할 수 없을 때까지 1을 반복최종적으로 나누어진 하얀색 색종이의 개수, 파란색 색종이의 개수를 출력한다. 💡알고리즘 설계작은 문제를 통해 큰 문제를 해결하는 분할 정복 알고리즘을 사용하였다.분할 정복 알고리즘은 1)분해 - 2)정복 - 3) 결합 이 세 과정으로 구성된다.1) 분해: 문제를 4개로 나눈다.2) 정복: 나눠진..

💡문제 링크https://www.acmicpc.net/problem/1932 💡문제 분석 요약한 층에 하나의 숫자를 선택선택한 모든 숫자의 합이 최대가 되는 그 최댓값을 출력 💡알고리즘 설계1. n(층수) 입력받기2. 테이블화를 하기 위해 (n+1)*(n+1) 크기의 테이블 만들기 3. 각 층의 숫자들을 테이블에 넣기4. 아랫층의 숫자 중 가장 큰 수를 본인과 합한 수를 본인에게 넣기알고리즘 흐름이 잘 이해가 안 될 때에는 직접 손으로 그려보기!💡코드n = int(input())# 테이블화table = [[0] * (n+1) for _ in range(n+1)]# 테이블 채워넣기for i in range(1, n+1): table[i][1:i+1] = list(map(int, input().sp..

💡문제 링크https://www.acmicpc.net/problem/24416 💡문제 분석 요약피보나치 수열을 재귀함수로 푸는 의사 코드, 동적 계획법으로 푸는 의사 코드가 주어졌다.이를 실제 파이썬 코드로 바꾸고, 연산횟수를 출력하여라. 💡알고리즘 설계1. 재귀함수 코드 짜기2. DP 코드 짜기3. 함수 안에 변수를 넣을 때 global 함수 써주기 ⭐ ⭐ ⭐ 💡코드n = int(input())count_recur, count_dp = 0, 0f = [0] * (n+1)def fib_recur(n): global count_recur if (n==1 or n==2): count_recur += 1 return 1 else: return fib_recur(n-1) + fib..