본문 바로가기

알고리즘/프로그래머스

(43)
[프로그래머스]Lv3. 미로 탈출 명령어(Python) https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 (x, y)에서 (r, c)까지 이동하는 거리가 총 k인 경로 중 사전 순으로 가장 빠른 경로 구하기 격자의 바깥으로는 나갈 수 x 같은 격자를 두 번 이상 방문 가능함 S, E는 다름 해당하는 경로가 없다면 impossible 반환 여러 풀이 중에서 해당 문제를 그리디로 접근한 풀이를 참고해서 정리해 보았다. ('d') + ('l') + ('rl') + ('r') + ('u') 1...
[프로그래머스]Lv2. 무인도 여행(Python) https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 무인도에서 상하좌우 이동을 하여 인접한 무인도를 모두 탐색(BFS) 인접한 모든 무인도 방문 후 무인도의 합을 period에 추가 1. 상하 좌우의 이동을 체크할 델타 리스트 dx, dy 선언 2. 방문 여부를 나타내는 visited 리스트 생성 코드 dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] def solution(maps): # 맵의 세로 길이와 가로 길이..
[프로그래머스]Lv2. 거리두기 확인하기(Python) https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 함수를 별도로 선언해 places 배열을 돌며 각 대기실 별로 체크 1. 같은 좌표 or 거리가 2 이상이면 pass 2. 거리가 1이면 위반 3. 거리가 2이면1. PXP => 가능 2. P => 가능 X P 3. PX PO PO => 불가능 OP OP XP 코드 def check(place): # x는 열 y는 행 p_list = [] for y in range(5): for x i..
[프로그래머스]Lv3. 있었는데요 없었습니다(SQL) https://school.programmers.co.kr/learn/courses/30/lessons/59043 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 1. ANIMAL_OUTS의 ANIMAL_ID는 ANIMAL_INS의 외래 키 => WHERE 절에 조인 2. ANIMAL_INS의 DATETIME(보호 시작일)보다 ANIMAL_OUTS의 DATETIME(입양일)이 더 빠름 3. 보호 시작일이 빠른 순으로 정렬 => 기본이 ASC(빠른 순) 날짜 '빠르다' == '오래되었다' == 작다 정렬 => 기본이 오름차순(ASC) => 날짜 빠..
[프로그래머스]Lv3. 없어진 기록 찾기(SQL) https://school.programmers.co.kr/learn/courses/30/lessons/59042 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 ANIMAL_INS => 동물 보호소에 들어온 동물의 정보 ANIMAL_OUTS => 동물 보호소에서 입양 보낸 동물의 정보 ANIMAL_OUTS의 ANIMAL_ID는 ANIMAL_INS의 외래 키 입양을 간 기록은 있지만 보호소에 들어온 기록이 없는 동물의 ID, 이름을 ID 순으로 조회 코드 SELECT ANIMAL_ID, NAME FROM ANIMAL_OUTS WHERE ANIMA..
[프로그래머스]Lv2. 광물 캐기(Python) https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 1. 곡괭이 1개 => 5개의 광물 캐기 가능 2. 주어진 곡괭이로 캘 수 있는 광물만큼 자르기 3. 연속해서 5개를 캐야하므로 5개씩 광물을 잘라 새로운 배열에 저장 4. 다이아 > 철 > 돌 순서대로 정렬해야 최소한의 피로도로 작업 끝내기 가능 코드 def solution(picks, minerals): answer = 0 sum = 0 # 곡괭이의 수 for pick in pic..
[프로그래머스]Lv1. 개인정보 수집 유효기간(Python) https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 1. 주어진 약관 종류와 이에 따른 유효기간을 저장할 적절한 자료구조를 선정한다. => 딕셔너리 선택 2. 연, 월, 일 형식으로 되어 있는 날짜 정보를 일수로 통일하여 문제를 푼다. => 별도 함수 생성 3. enumerate() 함수를 사용해 answer에 파기해야 할 개인정보에 해당하는 번호인 (index+1)를 추가해 나간다. 코드 def changeDate(date): y, ..
[프로그래머스]Lv2. 두 큐 합 같게 만들기(Python) https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 큐를 사용해야 하므로 덱 라이브러리 사용 원소의 총합이 큰 큐에서 작은 큐로 이동하는 것이 최소 횟수를 보장함을 확인 while 문을 사용해 두 큐의 총합이 같을 때까지 원소가 이동하도록 하고 같거나 같게 만들 수 없는 경우 break 코드 실패 from collections import deque # 문제에서 주어진 자료구조 def solution(queue1, queue2): an..