프로그래머스 12

[python] 프로그래머스 level 2. [1차] 프렌즈4블록

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 - 반복문을 통해서 2x2 크기의 정사각형 안의 4개 값이 모두 같다면 set에 넣어준다. (향후 중복된 좌표 없애주기 위해 set 사용) - set에 있는 좌표 값들은 '0' 처리 - 없어진 블록들은 아래로 땡겨준다. - 첫번째에서 찾은 블록의 갯수가 0개면 더 이상 블록을 없앨 수 없기 때문에 while문을 멈추고, 그동안 없앤 블록 갯수를 return 코드 def find_bloc..

[python] 프로그래머스 level2. 후보키

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 python으로 푼다면 set(집합) 자료구조를 잘 이용할 수 있어야한다. 먼저 유일성이고 뭐고 가능한 키 조합을 모두 구해준다. (시간될 때 itertools에서 제공하는 함수 말고 직접 구현해보기) 그 뒤에 아래 조건을 만족하도록 구현해준다. [유일성 : 릴레이션에 있는 모든 튜플에 유일하게 식별되어야 한다. ] 위에서 구한 인덱스로 구성된 키 조합을 각 속성값으로 대입하여 튜플로 ..

[python] 프로그래머스 level2 과제 진행하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 stack을 사용한 구현풀이 시간내에 과제를 끝낸 경우에 stack을 거꾸로 순회하면서 과제를 수행한다. 마지막 과제에 도달했을 경우 stack에 남은 아직 수행하지 못한 과제를 거꾸로 순회하면서 수행해준다. 코드 def solution(plans): ans = [] for plan in plans: t,m = map(int, plan[1].split(":")) plan[1] = t*..

[python] 프로그래머스 level2 문자열 압축

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 완전탐색 문자열을 자를 수 있는 단위의 갯수는 1 ~ 문자열 길이 반 까지 가능하므로 이 모든 갯수를 확인해봐야한다. 예를 들어, 갯수가 3개라면 (s = abcabcdede ) turn 1) s1 = abc s2 = abc s1 == s2 이므로, count = 2 turn 2) s1 = abc s2 = ded s1 != s2 이므로, temp_s = 2abc turn 3) s1 = ..

[python] 프로그래머스 level3 입국심사 / 이분탐색

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 이분탐색 풀이 범위 : 심사에 걸리는 최소 시간 ~ 심사에 걸리는 최대 시간 * 사람 수 mid : 임의의 시간, mid // time 은 임의의 시간동안 해당 심사대가 심사할 수 있는 사람 수를 계산한 것 기준 : mid 동안 심사한 사람 수(people)이 n보다 크거나 같으면 시간이 충분한 것이므로, right 조정 mid 동안 심사한 사람 수(people)이 n보다 작으면 시간이..

[python] 프로그래머스 level2 구명보트 / 그리디

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42885?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 투포인터 이용한 풀이 먼저 주어진 배열을 오름차순으로 정렬해준다. 몸무게가 가벼운 순으로 정렬되었기 때문에 시작포인터(가장 가벼운 사람) = 0, 끝포인터(가장 무거운 사람) = 마지막 로 설정해준다. 1. 시작 = 끝 이면 한명 태우고(cnt + 1), 모든 사람 구조한거기 때문에 종료 2. 시작 몸무게 + 끝 몸무게 limit 이면, 끝 몸무게(무거운 ..

Algorithm 2023.05.12

[python] 프로그래머스 level3 여행경로 / DFS/BFS

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 1. 출발지를 key, 도착지 배열을 value로 하는 dict 생성 2. 도착지를 내림차순으로 정렬해준다. -> stack.pop()을 사용하면 알파벳 순서대로 확인할 수 있음. 3. 시작지는 ICN이므로 stack에 넣고 시작 출발지가 dict에 없거나 (출발할 수 없는 공항, 즉 맨 마지막 도착지가 되는 경우) 더이상 이동할 공항이 없거나 위 두가지 경우, path에 stack.p..

Algorithm 2023.05.11

[python] 프로그래머스 level3 단어변환

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 백트래킹으로 모든 경우의 수를 계산해서 최소 경우를 구했다. dfs 함수 내에서 begin == answer의 경우 단어를 몇번 변경했는지 횟수를 가장 작은 걸로 갱신해준다. words 배열을 하나씩 가져와서 begin 단어와 다른 알파벳이 1개인 단어를 찾는다. 다른 알파벳이 1개이며, 그 단어로 변경을 진행하지 않았으면 횟수 + 1 해서 재귀를 돌린다. 빠져나왔으면 모든 경우의 수를..

카테고리 없음 2023.05.10

[python] 프로그래머스 level2 게임 맵 최단거리

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 [DFS/BFS 차이점] DFS 최대한 멀리 있는 노드를 우선으로 탐색 ex) 덩어리 몇개인지 개수 세기 스택 이용 -> 재귀함수로 구현하면 간결하게 구현 가능하지만, 시간복잡도 고려 필요함 BFS 무조건 가까이 있는 노드부터 탐색 ex) 시작점부터 도착점까지 이동하는 최소 칸의 개수 큐 자료구조 이용 queue에 시작점 넣어준다. while 조건으로 queue가 비어있을 때까지 반복돌린..

카테고리 없음 2023.05.10

[python] 프로그래머스 level2 타겟 넘버

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 재귀 활용. 문제에 주어진 예시는 numbers [1,1,1,1,1] target 3 return 5 이다. dfs(0,0)으로 시작하면 재귀함수를 통해서 depth 1 : (0 + 1) + (0 - 1) depth 2 : (0 + 1 + 1) + (0 + 1 - 1) + (0 - 1 + 1) + (0 - 1 - 1) depth 3 : (0 + 1 + 1 + 1) + (0 + 1 + 1..

Algorithm 2023.05.09