10. 주식가격 (스택/큐) ★★
2024. 7. 18. 21:23
프로그래머스/Lv. 2
유형 : 스택/큐풀이 시간: 5분 -> .. 인터넷 검색 def solution(prices): answer = [0 for i in range(len(prices))] popped = [] while prices: curr = prices.pop(0) for i in range(len(popped)): if curr >= popped[i]: answer[i] += 1 popped.append(curr) return answer 답도 틀리고 효율성 테스트에서도 시간 초과. 뭔가 다른 방법을 생각해내야 할 듯 하다. 그냥 collections의 deque 라이브러리를 import하면 되는 거였다. ..
9. 다리를 지나는 트럭 ★ (스택/큐, sum함수의 시간 복잡도, deque)
2024. 7. 18. 20:57
프로그래머스/Lv. 2
def solution(bridge_length, weight, truck_weights): answer = 0 bridge = [0 for i in range(bridge_length)] success = [] truckcnt = len(truck_weights) while True: #종료 조건 설정 if len(success) == truckcnt: break if bridge: if bridge[0] == 0: del bridge[0] else: success.append(bridge.pop(0)) if tr..
8. 프로세스 ★ (빈 배열에 대해 max: runtime error)
2024. 7. 17. 23:58
프로그래머스/Lv. 2
유형 : 구현풀이 시간: 15분 def solution(priorities, location): answer = [] tf = [False for i in range(len(priorities))] tf[location] = True cnt = 0 while priorities: curr = priorities.pop(0) tfcurr = tf.pop(0) if priorities and curr 간단한 queue 문제였다.풀이 자체는 어렵지 않았지만, max(priorities) 에서 자꾸 오류가 나서 애먹었다.빈 배열에 대해 max할 때 error가 난다는 것을 찾아 해결했다.
7. 기능개발 ★(실수)
2024. 7. 17. 23:45
프로그래머스/Lv. 2
유형: 스택/큐풀이 시간: 20분 def solution(progresses, speeds): answer = [] lefttime = [] for i in range(len(progresses)): days = (100 - progresses[i]) // speeds[i] if ((100 - progresses[i]) % speeds[i]) != 0: days += 1 lefttime.append(days) while lefttime: popped = lefttime.pop(0) acc = 1 while lefttime and lefttime[0] 작은 실수를 해서 헤매었다...우선 앞..
6. 전화번호 목록 ★★ (hash table, startswith)
2024. 7. 17. 22:49
프로그래머스/Lv. 2
유형 : 해시구현 시간: 30분 -> 인터넷 검색 1. 이중 루프def solution(phone_book): for i in range(len(phone_book)): for j in range(i+1, len(phone_book)): if phone_book[i] in phone_book[j] or phone_book[j] in phone_book[i]: return False return True i로 순회하면서 i 이후부터의 아이들과 대조하도록 하였다. (당연히) 시간 초과. 2. key 찾기 def solution(phone_book): lenlist = [[x, len(x)] for x in phone_book] ..
5. 숫자의 표현 ★ (스킬 체크 lv2)
2024. 7. 17. 19:39
프로그래머스/Lv. 2
유형: 구현풀이 시간: 10분 def solution(n): answer = 0 i = 0 while True: i += 1 if i >= n: break acc = 0 j = i while True: acc += j j += 1 if acc == n: answer += 1 if acc > n: break return answer+1 근데 두 번째로 할 때는 안됐다. 왜일까. 솔직히 내가 직접 한 게 아니고 아까 한 걸 떠올려서 했다. 꼭 다시 해 보자.
4. 이진 변환 반복하기 (bin, oct, hex)
2024. 7. 17. 03:30
프로그래머스/Lv. 2
유형 : 구현풀이 시간 : 5분 ◈def solution(s): disappear = 0 cnt = 0 while True: if s == "1": break beforelen = len(s) s = s.replace("0", "") disappear += beforelen - len(s) s = bin(len(s))[2:] cnt += 1 return [cnt, disappear] bin을 이용해 쉽게 풀었다.
3. JadenCase 문자열 만들기 (capitalize, title)
2024. 7. 17. 03:23
프로그래머스/Lv. 2
유형 : 구현 풀이 시간 : 5분 def solution(s): answer = [x.capitalize() for x in s.split(" ")] ans = '' for x in answer: if answer.index(x) == len(answer)-1: ans += x break ans += x ans += " " return ans