728x90

programmers 16

[프로그래머스] level3 등굣길 파이썬

풀이시간 : 30분 체감 난이도: level2 https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ※ 주의 - puddles 가 컴퓨터 index 접근인 [1,1]이 아니라 [2,2]로 되어있다. 시작 위치도 [1,1]이다. ※ 접근법 1. 동적 프로그래밍 -> 최단거리를 구하는 것도 아니고, 갈 수 있는 경로를 모두 구하는 것. 2. 동서남북을 확인하여 지금까지 왔던 값을 모두 더해주면 내가 현재 지점까지 올 수 있는 모든 경우의 수가 된다. 3..

Python/CoTe 2024.03.05

[프로그래머스] level3 - 야근지수 파이썬 풀이

풀이 시간 : 15분 level3 맞나,,,? https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 핵심 최대 일들 부터 처리해줘야 제곱의 합이 작아진다. 접근법 1. 정렬 (문제는 맞으나 매번 for 문마다 정렬하면 효율성이 떨어진다) 2. heap (자동으로 정렬되는 heap 이용) heap 이용한 풀이 import heapq def solution(n, works): heap = [] #최대 힙으로 만든다 for work in works: he..

Python/CoTe 2024.03.05

[programmers] level2 - 연속 부분 수열 합의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 포인트 1. 주어진 건 리스트의 수열 원소들이지만.. 수열 합을 구할 때는 연속 수열이다! → 즉, [7, 9, 1, 1, 4] 가 반복되는 [7, 9, 1, 1, 4, 7, 9, 1, 1, 4 …] 2. 구할 수 있는 수열 합의 개수이다. → 즉, 기존에 합이 11인 값이 있다면, 1번만 계산한다. 해결 ▶ 반복되는 수열의 접근은 간단하게 elements로 주어진 수열을 두 번 이어서 붙였다...

Python/CoTe 2023.02.06

[programmers]level3 정수삼각형

https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ※접근법 TopDown 방식과 BottonUp 모두 이용가능하다. TopDown 방식으로 하면, 아랫줄이 기준이 되어 윗줄의 왼쪽과 오른쪽에 연결된 노드들을 비교하여 가장 큰 값을 더하는 다이나믹 프로그래밍 방식으로 더해 나간다. Top Down으로 하면 마지막 줄에 나온 값들 중 가장 큰 값을 리턴해야하고, Bottom Up 방식으로 하면 결국 최종 가장 큰 값만 저장된다. def TopDown..

Python/CoTe 2022.10.20

[programmers] level2 위장

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ※접근법 1. 딕셔너리에 나올 수 있는 카테고리별로 저장해준다. -> 해당 카테고리에 계속 append 해야 하기 때문에 collections 의 defaultdict 이용 2. 처음에는 모든 조합의 경우의 수를 구하기 위해 1 카테고리를 선택할 때, 2 카테고리를 선택할 때로 매번 나누어서 생각했는데, 정답은 맞으나 1번 테스트 케이스에서 시간초과가 난다. 3. 핵심적으로는 조합을 순열로 풀 수..

Python/CoTe 2022.10.20

[programmers] 숫자짝궁 level1 - python

https://school.programmers.co.kr/learn/courses/30/lessons/131128?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 자체는 쉬우나 중복 허용 교집합 찾는 방법에서 시간 초과 조심! POINT set 함수를 이용하면 중복 없이 교집합을 찾는다. 중복 허용되는 list 끼리의 교집합을 찾기 위해서는 collections 의 Counter 이용! (Counter의 존재를 쉽게 까먹는 것 같음..) 문제 풀이 순서 1. Counter(listX) & Counter(listY) 하면..

Python/CoTe 2022.10.17

[programmers] level2, 2*n 타일링

https://school.programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 대표적인 다이나믹 프로그래밍 문제! (사실 이 문제보고 다이나믹 프로그래밍 생각 못하면 다이나믹 프로그래밍 알고리즘 다시 공부해야함) 제한사항에서 얻을 수 있는 힌트! 1. 60,000이하의 자연수이다 -> 경우의 수가 많다, 일반적인 조합 문제로 접근하는 건 올지 않다. -> 동적 프로그래밍 2. 경우의 수를 1,000,000,007으로 나눈 나머지를 return -> 계산시 시간 효율성을 따진..

Python/CoTe 2022.08.28

[programmers] 올바른 괄호

https://programmers.co.kr/learn/courses/30/lessons/12909# 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 접근법 단순히 괄호 쌍을 확인하는 문제이므로 개수 세는 방식으로 풀이가 가능하다 1. '(' 라면 +1 2. ')' 라면 -1 3. 괄호는 항상 '(' 부터 시작 하기 때문에 ')'가 먼저 시작하면 음수가 된다. -> 합이 음수가 되는 경우 무조건 false 4. '(' 와 ')'의 개수만 같다면 합은 0이 되고 올..

Python/CoTe 2022.03.28

[programmers] 점프와 순간이동

https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr 접근법 건전지 사용을 줄이기 위해서 x2를 할 수 있으면 하는게 좋다! -> n부터 나누기 2를 해서 나머지가 0이면 순간이동을 하고 -> 나누기 2를 해서 나머지가 1인 경우에만 1칸씩 이동하여 1만큼 건전지를 사용한다. 즉, 2로 나누어 떨어지지 않는 경우(그림에서는 노란색 표시)만 count 하자! def solution(n): an..

Python/CoTe 2022.03.21

[programmers] 삼각 달팽이

https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 알 것 같지만 쉽게 생각하기 어려웠던 문제! 접근법 1. 삼각형을 이용해야 한다. 삼각형이니까 3번씩 반복되는 형태 임을 파악하자 -> 처음 위에서 아래로 숫자를 입력하고(0번 방향), 왼쪽에서 오른쪽으로 숫자 입력(1번 방향), 아래에서 위로 숫자 입력(2번 방향)이 삼각형이 다 채워질때까지 반복된다. 2. 이러한 과정은 그림에서 알 수 있듯이 n번만큼 반복됨을 발견..

Python/CoTe 2022.03.20
728x90