문제 [3차] 파일명 정렬 접근 문제에서 주어진대로 HEAD, NUMBER, TAIL을 분리해준다. lambda를 이용하여 정렬해주고, 출력한다. 코드 파이썬 코드 def solution(files): answer = [] file = seperateFile(files) f = sorted(file, ...
문제 [3차] 방금그곡 접근 시간에 따라 곡이 반복될 수도 있고, 잘릴 수도 있다. 편하게 하기 위해서는 해당 곡의 풀 버전을 구해야 한다. 잘리면 잘리는 버전, 반복되면 반복되는 버전을 구해서 그것과 m을 비교해주면 된다. 이를 위해 calcPlayTime 함수는 시작 시간과 종료 시간을 입력 받아 분 단위의 플레이 시간을 반환한다. m...
문제 오픈채팅방 접근 닉네임은 계속 바뀔 수 있지만, ID는 바뀌지 않는다. ID : 닉네임으로 딕셔너리를 만들고, 닉네임을 변경할 때마다 반영해놓는다. 최종적인 닉네임을 가지고 출력 형식에 맞게 출력해주면 된다. 코드 파이썬 코드 def solution(record): answer = [] dic = {} ...
문제 [1차] 뉴스 클러스터링 접근 다중 집합을 어떻게 구현할지 막막했다. set()을 이용하고 싶은데, set은 중복이 허용안되서 어떻게 할지 고민하다가, 그냥 하나씩 카운트해주기로 했다. 우선 주어지는 문자열을 2글자씩 짤라서 리스트로 저장한다. 그리고 집합을 이용해서 교집합과 합집합을 구한다. 이제 마지막으로 교집합과 합집합의 원소개...
문제 괄호 변환 접근 함수를 하나만들고 문제에서 주어지는 그대로 코드로 옮기면 된다. 문제가 조금 복잡해보여서 헷갈리지 않게 필요한 부분들을 모두 함수화시켰다. converse가 재귀를 담당하는 메인 함수, balenceStr은 문제에서 2번 균형잡힌 괄호 문자열 u, v로 분리하는 함수, isRightStr은 문제에서 3,4번의 기준인 ...
문제 [1차]캐시 접근 캐시 배열을 하나만들어두고, 정말 LRU 알고리즘을 하듯이 구현해야한다. LRU 알고리즘은 가장 오래동안 참조되지 않은 페이지를 교체하는 알고리즘이다. 이를 위해서는 해당 페이지가 언제 참조되었는지를 기록해주어야 한다. 최근 참조를 1부터 시작해서 나아간다면, 페이지가 바뀔때마다 나머지 캐시에 있는 페이지들을 모두 ...
문제 수식 최대화 접근 처음에 생각했던 것보다 복잡했다. 우선 입력값을 전처리하여 숫자와 수식으로 나눈다. 그 다음 주어진 수식에 대한 조합을 찾는다. 각 조합별로 수식을 연산한다. 코드 파이썬 코드 from itertools import permutations def solution(expression): s = ...
문제 주식가격 접근 스택 문제이다. 스택 최상단보다 큰 값이 나오면 작아질 때까지 스택에서 빼주면서 인덱스를 계산해준다. 모든 값을 스택에 추가한 후에는 스택에 얼마나 들어있었는지를 계산해주면 된다. 코드 파이썬 코드 def solution(prices): answer = [0] * len(prices) sta...
문제 프린터 접근 큐, 힙 문제이다. 프린터 자체는 큐로 구현하고, 우선순위를 최대 힙으로 구현해놓으면 편하게 풀 수 있다. 힙에서 가장 상단과 현재 큐의 상단을 비교하여 같으면 빼고 다르면 큐에 다시 삽입하는 식이다. 따로 큐나 힙을 쓰진 않았고 list를 이용해 구현했다. pq가 힙의 역할을 한다. 코드 파이썬 코드 d...
문제 타겟 넘버 접근 완전 탐색밖에 방법이 없는 것 같다. 각 숫자를 더하는 경우와 빼는 경우 두가지를 모두 확인해주면 된다. 코드 파이썬 코드 def solution(numbers, target): answer = bf(numbers, 0, target, 0) return answer def bf(numb...