전체 글

전체 글

    [프로그래머스] Level 2 - 땅따먹기 (Python)

    [프로그래머스] Level 2 - 땅따먹기 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr ✅ Solution dp를 이용하여 문제를 해결했다. 행을 하나씩 늘려가며 각 열마다 가질 수 있는 최댓값을 할당했다. 예를 들어, 2행 1열까지 오는 최댓값은 1행 2열, 1행 3열, 1행 4열의 최댓값 + 2행 1열의 값이다. 예를 들어, 2행 2열까지 오는 최댓값은 1행 1열, 1행 3열, 1행 4열의 최댓값 + 2행 2열의 값이다. 이..

    [프로그래머스] Level 2 - 스킬 트리 (Python)

    [프로그래머스] Level 2 - 스킬 트리 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr ✅ Solution 스킬이 선행 스킬 순서 배열에 존재할 때, 배울 수 있는 스킬(now)과 스킬의 인덱스 값이 같을 때, 배울 수 있는 스킬의 값에 1을 더해준다. 만약 같지 않다면 선행 스킬을 배우지 않은 것이므로 False를 리턴한다. ✅ Code def check(skill_tree, skill): now = 0 for s in skill_tree: if s in skill: if skill.index(s) == now: now += 1 else: return False return True def solution(skill, skill..

    [프로그래머스] Level 2 - 방문 길이 (Python)

    [프로그래머스] Level 2 - 방문 길이 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr ✅ Solution 이동했을 때 좌표가 범위 내에 있을 때, visited에 있는지 없는지 판단한다. 없다면 visited에 추가해주고, answer += 1을 해준다. ✅ Code def solution(dirs): answer = 0 visited = [] x, y = 5, 5 move = {'U': (-1, 0), 'D': (1, 0), 'R': (0, 1), 'L': (0, -1)} for dir in dirs: nx, ny = x + move[dir][0], y + move[dir][1] if 0

    [프로그래머스] Level 2 - 가장 큰 정사각형 찾기 (Python)

    [프로그래머스] Level 2 - 가장 큰 정사각형 찾기 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/12905 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr ✅ Solution 정사각형이 되기 위해서는 최소한 위, 왼쪽, 왼쪽 대각선의 값이 0이 아니여야 하는 것을 이용한다. 만약 위, 왼쪽, 왼쪽 대각선의 값이 모두 0이 아니라면 정사각형이 될 수 있다는 의미이므로 그중 최솟값을 찾아 1을 더해준다. row나 col이 1 일수 있으므로 board [0][0] 값에 따라 answer 초기값을 정해준다. ✅ Code def solution(board): answer = 0 if not board[0][0] e..

    [프로그래머스] Level 2 - 쿼드압축 후 개수 세기 (Python)

    [프로그래머스] Level 2 - 쿼드압축 후 개수 세기 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr ✅ Solution 재귀함수를 이용한다. 만약 첫번째 요소와 값이 다르다면 압축이 불가능하므로, 다시 함수를 호출한다. 모두 같다면 압축 가능하므로 answer에 값을 더해준..

    [프로그래머스] Level 2 - n^2 배열 자르기 (Python)

    [프로그래머스] Level 2 - n^2 배열 자르기 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/87390 코딩테스트 연습 - n^2 배열 자르기 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부 programmers.co.kr ✅ Solution left, right를 통해 해당되는 row들의 값만 구하는 것이 시간 초과 나지 않게 푸는 방법이다. left % n, right % n 은 몇 번째 row인지를 나타낸다. 즉, left~right의 값은 left % n 번째 row부터 right % n 번째 row 사이에 존재한다..

    [프로그래머스] Level 2 - 3xn 타일링 (Python)

    [프로그래머스] Level 2 - 3xn 타일링 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/12902 코딩테스트 연습 - 3 x n 타일링 programmers.co.kr ✅ Solution n이 홀수일 땐 항상 답은 0이다. f(2) = 3, f(4) = 11, f(6) = 41, f(8) = 153 f(n) = f(n-2) * 4 - f(n-4) f(n-2) * 4 보다 f(n-4)가 더 크면 음수가 나오기 때문에 모듈러 분배 법칙을 이용하여 처리한다. ✅ Code def solution(n): if n % 2 == 1: return 0 dp = [3, 11] for i in range(2, n//2 + 1, 1): dp.append(((dp[i-1] * 4 % 1000000007) - dp[i-2]..

    [프로그래머스] Level 2 - 구명보트 (Python)

    [프로그래머스] Level 2 - 구명보트 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr ✅ Solution people을 내림차순으로 정렬한다. 가장 큰 요소(people[0]) 을 보트에 추가하고, 제일 작은 요소부터 무게를 넘지 않을 때까지 추가한다. len(people) >=2 일 때 반복 그리고 people에 요소가 남아있다면 보트 하나가 추가로 필요한 것이므로 answer += 1 해준다. ✅ Code from ..