LV3 [KAKAO] 불량 사용자
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 우선 banned_id 에 있는 리스트를 돌면서, 이 포맷에는 어떤 user_id 들이 들어갈 수 있을지 초기화 했다. 예시를 보자면 객 패턴에 맞는 user_id를 저장했다. 패턴에 매칭되는걸 확인하는건 우선 길이를 먼저 체크했고, *가 아닌 경우에 문자열이 같은지 확인했다. 이후에는 dfs를 통해서 모든 경우의 수를 만들어보았다. 단, 배열에 중복된 요소는 들어가지 않게 말이다. 결..
LV2 [KAKAO] [3차] 방금그곡
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17683# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (해당 풀이는 처음 풀었을때의 풀이고, 뒤에 훨씬 간단한 개선 풀이 코드가 있음) 문자열로 들어온 시간을 파싱해서 노래의 재생시간(runningTime)을 구했다. 처음에는 단순히 int로 바꾼다음 끝나는 시간에서 시작시간을 빼면 될거라 생각했으나 "13:50 ~ 14:10" 처럼 끝나는 시간의 '분' 이 더 앞설때 처리하기가 까다로워 datetime 을 활용하여 처리했다. compl..
LV2 [KAKAO] [1차] 캐시
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해당 문제는 그냥 LRU 알고리즘 동작 방식을 공부하고 구현하면 된다. LRU를 몰랐다면 못풀었을 거 같은.. 아무튼, LRU는 연결리스트로 구성되어 있기에 노드 클래스를 만들고, 연결리스트 클래스를 만들면 된다. 그리고 연결리스트 가장 앞에 넣는 (최근에 참조되었거나 새로 들어올 경우) 로직을 하나 만들고, 연결리스트를 cacheSize만큼 참조한 다음 매개변수로 들어온 data가 ..
LV2 [KAKAO] [3차] 압축
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 우선 2번의 조건으로 인해서 문자열의 서브 문자열을 모두 검사해서 사전에 등재한 가장 긴 문자열이 존재하는지 검사하는 줄 알았다. 그러나 두번째 예시를 보니까 그냥 앞에서부터 검사하면 되는거였기에 맞게 구현하였다. 우선 dictionary 구조로 A ~ Z를 키로, 1 ~ 26 을 값으로 초기화 해준다. 이후에는 문자열 첫번째부터 검사하면 되는데 만약 KAKAO이고 내가 검사해야할 위치..
LV2 [KAKAO] 튜플
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/64065?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 그냥 생각나는대로 막 구현했다. 그래서 코드가 개판이긴한데.. {} 를 기준으로 일일히 파싱했다. 이후에 문자열의 길이순으로 정렬했다. 그 후에 "n1, n2, n3" 형태로 되어있는 문자열을 "," 기준으로 split한 후에, 각 요소에 접근하여 set으로 중복을 체크하고 정답 배열에 넣어줬다. 코드 def solution(s): strs = [] i =..
LV2 [KAKAO] [1차] 프렌즈4블록
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 간단한 시뮬레이션 문제이다. 4개의 블록을 없애고, 밑으로 옮겨주는 행동을 반복적으로 하다가 없어지는 블록이 더이상 존재하지 않을 경우 답을 return 해주면 된다. 4개의 블록을 없애는 로직은 2차원 배열로 접근한다음 현재위치값과, 아래, 오른아래대각, 오른 좌표들이 모두 같은지 확인한다. (입력으로 들어오는 값은 문자열이라 list로 바꾸어주는 작업을 진행했다.) 같다면 각 좌표들..
LV2 [KAKAO] [3차] 파일명 정렬
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17686?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 최대한 다중정렬을 활용하려 해서 풀이했다. 우선 head, number, tail부분으로 나누었다. (코드상에는 tail은 body 에 들어간다.) 다중 정렬시에 문제가 좀 있었는데, 오름차순이나 내림차순 정도로만 기준을 정할 수 있는것이였다. 대소문자 구분을 하지 않는 추가조건이나 , 다른 정렬방법을 넣는 방식을 (아마 내가 몰라서) 취할 수 없었다. 따..
LV2 [KAKAO] k진수에서 소수 개수 구하기
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 단순한 문제이다. 조건이 많아보이지만 k진수로 바꿔준 후에 0을 기준으로 숫자를 나눈후에 그 숫자가 소수인지 아닌지 판별해주면 끝이다. 뭐 0이 옆에 있고 이런거 안따져도 된다. 다 따져보면 결국 소수값인지 판별만 하면 되는것이다. 단 17003 이런식일시 0과 0 사이의 결과가 ' ' (공백) 으로 반환되기에 예외처리를 해주면 된다. 코드 import math def is_prime_..
LV2 [KAKAO] 후보키
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에 후보키 개념이 애매모호해서, 그것부터 정리하고 문제풀이를 시작했다. 문제의 핵심은 유일성보다는 최소성을 어떻게 판별할것인가, 였던거 같다. 최소성을 판별하기 위해서는 부분집합을 활용하면 된다. 만약 속성이 '학번' , '이름', '학년' 이라고 가정해보자. 이 때 '학번' 하나만으로도 후보키가 될 경우, '학번' 이 특정 집합의 부분집합이 되는 순간 최소성을 위반한다. '학번' ..
LV2 [KAKAO] n진수 게임
·
프로그래머스
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 풀기 위해서는 진법 변환에 대한 기초 지식이 있어야한다. 간단한 예로 로직을 살펴보면 7을 2진수로 나타내보자. 7 / 2 = 3 ... 1 3 / 2 = 1 ... 1 1 / 2 = 0 ... 1 0 / 2 = 0 ... 0 (... 은 나머지를 나타낸다.) 10진수 7을 2진수로 나타내면 1110 이다. n진수로 나타내고 싶을때, 나머지들을 취하면 해당 진법으로 변환시킬 수 ..