본문 바로가기

알고리즘135

[Python] 프로그래머스 : 호텔 방 배정 https://school.programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 문제 풀이 ✔️ 느낀 점 💻 코드 import sys sys.setrecursionlimit(10000000) def find(x, rooms): if x not in rooms: rooms[x] = x+1 return x rooms[x] = find(rooms[x], rooms) return rooms[x] def solution(k, room_number): ans = [] rooms = .. 2022. 10. 19.
[Python] 구름 : [현대모비스] Dead or Arrive https://level.goorm.io/exam/152114/%ED%98%84%EB%8C%80%EB%AA%A8%EB%B9%84%EC%8A%A4-%EC%98%88%EC%84%A0-dead-or-arrive/quiz/1 구름LEVEL 코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이 level.goorm.io 💡 문제 풀이 우선순위 큐를 이용해서 해결했다. 딕셔너리 자료형이 key 값을 찾을 때 O(1)의 시간 복잡도를 가져서서 딕셔너리를 사용했다. 또한 최대한 시간복잡도를 줄이기 위해서 heapq를 사용했고 최대 힙으로 구현해서 찾아줬다.. 2022. 10. 13.
[Python] 프로그래머스 : 기지국 설치 https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 문제 풀이 DP 관련 문제이다. 기지국의 최대 전파 범위는 도달 거리의 × 2 + 1 만큼이다. 기지국을 기준으로 좌우로 범위가 나뉘는데 시작 지점부터 기지국 왼쪽 도달 범위까지 거리에서 최대 전파 범위를 나눠서 올림 처리해주면 필요한 최소 개수를 셀 수 있다. 이 방법은 단순히 최소 개수만 구해주면되기 때문에 가능하다. ✔️ 느낀 점 이런 류의 문제가 너무나도 약해서 다른 문제들도 많이 풀어.. 2022. 10. 9.
[Python] 프로그래머스 : [3차] 압축 https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 문제 풀이 일반적인 구현 문제이다. 문제를 두 파트로 나누어 풀었다. dict에 있으면 정답에 append 하는 파트, dict에 없으면 dict에 append 하는 파트' 정답에 append 하는 파트에서는 현재 dict에 있는 최대 길이부터 문자열을 확인하고 해당 문자열이 있으면 정답 리스트에 담아준다. dict에 append 하는 파트에서는 리스트에 담아준 문자열을 가져와서 다음 문자열을.. 2022. 10. 6.
[Python] 프로그래머스 : [1차] 셔틀 버스 https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 문제 풀이 구현 문제이다. 조심해서 구현만 할 수 있으면 된다. 시간에 대한 처리를 위해서 "hour : minute"으로 나오는 시간을 분으로 바꿔주는 함수를 만들어 사용한다. 중요한 핵심은 다음과 같다. 마지막 버스에 탄 인원이 m명과 같다면 마지막에 온 사람보다 1분 빨리 오면 되고, 마지막 버스에 탄 인원이 m명과 다르다면 그냥 버스 막차시간에 맞춰서 오면 된다. 내 코드의 경우는 처음.. 2022. 10. 3.
[Python] 프로그래머스 : 다단계 칫솔 판매 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 문제 풀이 기본적인 구현 문제이다. 설명은 엄청나게 되어있지만 결국 트리구조를 고려해서 구현하면 된다. seller의 길이가 10만이라서 일직선의 트리구조가 되는 최악의 경우를 따지면 시간이 부족할 수도 있다. 근데 문제에서 최대로 벌 수 있는 이윤은 10,000원이고 이윤의 10%를 상납해야 하는 구조라서 최대로 5번의 반복을 넘어가지 않는다. 따라서 그냥 구현해주면 된다. ✔️ 느낀 점 처.. 2022. 9. 29.