Coding/프로그래머스 9

[프로그래머스] 2023 KAKAO BLIND RECRUITMENT - 미로 탈출 명령(Lv.3)

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/150365 문제 요약(x, y) 위치에서 시작해, (r, c) 위치까지 정확히 k번 이동해서 도달해야 한다.이동 방향은 'd', 'l', 'r', 'u' 네 가지.이동 가능한 경로 중 사전순으로 가장 빠른 문자열을 출력.불가능하면 "impossible"을 출력.처음엔 DFS로..처음에는 DFS로 모든 경로를 다 탐색하면서(x, y) → (r, c)로 도달할 수 있는 경로를 전부 모아서그 중 사전순으로 가장 빠른 걸 고르면 되겠다고 생각했다.실제로 그렇게 짰고, 로직도 잘 돌아가는 듯 보였다.하지만 결과는...❌ 시간초과, 런타임에러이유는 간단!이 문제는 도달할 수 있는 경로가 너무 많고..

[프로그래머스] 단어변환 (Lv.3) - (BFS/DFS)

처음 나의 풀이 (동작은 됨)from collections import dequedef solution(begin, target, words):    visited = [False] * len(words)    queue = deque()    for word in words:  # 후보 단어 삽입        diff = 0        for idx in range(len(word)):            if begin[idx] != word[idx]:                diff += 1        if diff == 1:            queue.append((word, 1))            visited[words.index(word)] = True    while queu..

[프로그래머스] 카펫 (Lv.2) - (완전탐색)

문제 설명프로그래머스 Lv.2 - 카펫 문제중앙에 노란색 타일로 채워진 직사각형이 있고, 그 주위를 갈색 타일로 감싸서 카펫을 만들었다.주어진 갈색(brown) 타일 수와 노란색(yellow) 타일 수를 기반으로카펫의 가로, 세로 길이를 구하라.조건 요약전체 타일 수 = brown + yellow(가로 - 2) * (세로 - 2) == yellow 를 만족해야 함가로 ≥ 세로 조건처음에 시도한 방식: 소인수분해 + 조합from itertools import combinationsdef multiple_tuple(tuple):    result = 1    for i in tuple:        result *= i    return resultdef solution(brown, yellow):    b..

[프로그래머스] 전화번호 목록 (Lv.2) - (python 파이썬)

문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/42577  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  Approach전화번호 목록에서, 한 번호가 다른 번호의 접두어가 되는 경우가 있는지를 판단하는 문제다.처음에는 모든 번호를 비교해서 일일이 접두어를 체크하려 했지만,효율성을 고려해서 해시 방식으로 풀어보았다. 나의 코드 :  시행착오 & KeyError처음에는 다음과 같이 썼다가 KeyError가 발생했다.if hash_number[temp] and temp != phone_num:이는 temp가 딕셔너리에 없을 때, 존재 여부..

[프로그래머스] 다리를 지나는 트럭 (Lv.2) - (python 파이썬)

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 🧠 Approach : 이 문제는"트럭이 일정 길이의 다리를 지나는데 걸리는 시간을 계산하는 시뮬레이션 문제다.트럭은 다리 위에 동시에 올라갈 수 있지만, 총 무게를 초과할 수 없다.또한 다리의 길이만큼의 시간 동안 다리 위에 머무르게 된다.처음에는 각 트럭이 다리 위에서 얼마나 지났는지를 직접 카운트하면서 풀었지만,챗GPT의 피드백을 반영해 다리 진입 시간을 기록하고 현재 시간과 비교하는 방식으로 리팩토링했다.또한 매 루프마다 ..

[프로그래머스] 같은 숫자는 싫어(Lv.1) - (python 파이썬)

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr Approach : 중복 숫자를 지우면서 순서를 유지하는 문제인데, 단순하게 중복을 지우는 세트로 바꾸고 리스트로 다시 만들어주면.. 당연히 안된다..! 세트로 변환될 때 순서가 바뀌기 때문이다.스택/큐를 활용하여 새로운 리스트를 만들어줘야할 것으로 보인다. 나의 코드 :  def solution(arr):     if not arr:         return arr     tmp = arr[0]     answer = [tmp]..

[프로그래머스] 기능개발(Lv.2) - (python 파이썬)

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr Approach : 작업하는데 남은 날들을 계산하여 day라는 리스트에 담고, 이 day리스트를 순회하면서 뒤에 숫자가 앞에 숫자보다 크지 않는부분에까지 숫자를 count해서 stack에 쌓는 아이디로 접근했다. 나의풀이 :  import math def solution(progresses, speeds):     days = []     answer = []     for idx in range(0, len(progresses))..

[프로그래머스] 주식가격 - (python 파이썬)

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이과정 : 먼저 시간복잡도가 O(n^2)로 보이는데, 이것보다 더 효율적으로 풀어야한다고 생각하여 계속해서 다른방법을 찾다가 풀이과정을 보았고, 그냥 원래 생각했던 대로 풀면 되는것이었다. 큐, 덱을 이용해서 풀어도 되지만 그냥 반복문 두개를 만들고 i, j 중 j를 이동시키며 시간을 i마다 계산해서 an..

[프로그래머스] 더 맵게 - (python 파이썬)

문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 문제풀이 : 처음에 힙을 안쓰고 배열에서 무작정 sort 한뒤 꺼내고 다시 넣고 과정을 반복하다가 역시 시간초과가 떴다. 힙을 사용해줘야 O(logn)의 시간복잡도를 가지고, 런타임 없이 해결된다. 또 다른사람의 풀이를 참고하면서 try, except로 훨씬 깔끔하게, 코딩할 수 있었다. 매개변수로 받은 배열 heapify를 통하여 sc..

1