본문 바로가기

python28

[Python] 프로그래머스 다리를 지나는 트럭 https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이트럭 여러대(truck_weights)가 다리를 지날때 걸리는 총 시간을 구하려 합니다. 다리에는 최대 bridge_length만큼의 트럭이 올라갈 수 있으며, 올라간 트럭의 무게는 weight 이하여야 합니다. 트럭이 다리에 진입한 시간을 기록하고 그때 트럭의 무게를 기록하여,다음 트럭을 진입시킬 수 있는지와 트럭이 언제 다리를 빠져나오는지 판단하는 알고리즘을 구현.. 2024. 8. 11.
[Python] 프로그래머스 프로세스 https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이우선순위 priorities와 몇번째로 실행해야 하는지 알아야 하는 프로세스의 위치 location이 주어질 때,location에 해당하는 프로세스의 실행 순서를 구하는 문제입니다. 항상 우선순위가 가장 높은 작업을 먼저 수행해야 하므로 priorities는 내림차순으로 정렬해줍니다. 작업을 (인덱스, 우선순위) 형태로 모두 큐에 담아주고, 하나씩 빼보면서 작업의 우.. 2024. 8. 8.
[Python] 프로그래머스 올바른 괄호 https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이괄호가 올바르게 짝지어져있는지 판별해야 하는 문제입니다.  아이디어는 '('가 나오면 list나 deque에 append 해주고 ')'가 나오면 pop 해주는 것입니다. 모든 문자열에 대해 이를 진행한뒤 list, deque가 비어있는지 판단해주면 올바르게 괄호를 짝지었는지 판별할 수 있습니다.  이때, stk이 비어있는 상태에서 pop 을 하는 경우 에러가 발생하므로.. 2024. 8. 7.
[Python] stack, queue 사용하기 C++에서는 stack 과 queue를 include 하여 자료형을 사용하면 되었다.  하지만 python에는 기본 자료형이 아닌 것 같아 어떻게 사용하는지 찾아봤다. 스택을 구현하는 방법은 list 자료구조나 collections 모듈의 deque 클래스를 사용하면 된다.  큐의 경우 queue 모듈의 Queue 클래스 또는 deque 클래스를 사용하면 된다. 결론적으로, deque 를 사용하는 것이 데이터를 넣고, 뺄때 append(), pop_left(), pop() 메서드를 사용하므로 C++과 유사하여 사용하기 편리했다. 기억에 남고 편하게 사용할 수 있는 자료형이 deque가 될 것 같다. from collections import dequefrom queue import Queue'''queu.. 2024. 8. 6.
[Python] 프로그래머스 기능 개발 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이현재 진도 progresses 와 진도율 speeds가 주어질 때 배포하는 날에 몇개의 기능을 배포하는지 담아 리턴하는 문제이다. 먼저 배포까지 남은 일수를 모든 progress에 대해 구해준다. 이때 ceil을 사용해 올림처리 한다. (7/3 = 2.33... 이므로 3일만에 처리 가능함)  다음 작업의 배포일까지 남은 일수가 현재 작업보다 크다면, 이때는 지금까지 완료한 기능을 배포할 수 있다는.. 2024. 8. 5.
[Python] 프로그래머스 문자열 다루기 기본 https://school.programmers.co.kr/learn/courses/30/lessons/12918?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이string 의 isdigit 메서드를 사용해 문제를 해결할 수 있습니다. def solution(s): if len(s) == 4 or len(s) == 6: if s.isdigit(): return True return False 2024. 7. 29.
[Python] 프로그래머스 평균 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/12944 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이sum 및 len을 사용해 평균을 리턴합니다.def solution(arr): return sum(arr) / len(arr) 2024. 7. 29.
[Python] 프로그래머스 전화번호 목록 https://school.programmers.co.kr/learn/courses/30/lessons/42577?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이zip과 startswith 을 사용하면 쉽게 해결할 수 있습니다.zip(list1, list2)는 list1, list2의 인접한 요소를 짝지어 튜플을 반환합니다. 이를 통해 반복문 내에서 인접한 두 요소를 비교할 수 있습니다. ex)zip(phoneBook, phoneBook[1:])phoneBook: ["123", "1234", "456"]phoneBook[1:].. 2024. 7. 21.
[Python] 완주하지 못한 선수 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이완주하지 못한 선수를 찾아내는 문제로, 해시를 사용해 문제를 해결할 수 있습니다. 먼저 dict[key] 의 value가 없는 경우 0으로 가져오며, 이 때 value를 1로 초기화 해줍니다. 값이 존재하는 경우 기존의 dict[name]의 값을 하나씩 늘려줍니다.  다음으로 completion을 돌며 dict의 value를 하나씩 빼주고 value가 0이 아닌 key를 리턴해주면 답을 구할 수 있.. 2024. 7. 21.
[Python] 프로그래머스 정수 제곱근 판별 https://school.programmers.co.kr/learn/courses/30/lessons/12934?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이Sol1 은 math 라이브러리의 sqrt 함수를 사용해서 풀었고 Sol2는 for문을 사용해 풀었다. 테스트케이스 통과 시간은 for를 사용하는 sol2가 더 길다.from math import * def solution(n): # Solution 1 if int(sqrt(n)) == sqrt(n): return (sqrt(n) + 1)**2 .. 2024. 7. 18.