목록코딩테스트/Programmers Level 1 (59)
김찬양의 개발일지
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2H7qm/btsBrNiJp15/mkkibuAZOMPPdwi05E3kz1/img.png)
https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이과정 먼저 약수의 갯수가 필요하기떄문에 약수를 만드는 함수가 필요하다. 약수를 만드는 방법은 널리 알려져있다. 대표적인 방법이 약수가 대칭적이라는것을 이용해서 1부터 제곱근까지 for를 돌려서 한쪽을 출력하고, 그 수로 나눈 값인 반대쪽을 출력한다. 이렇게만 하면 제곱수는 제곱근이 두번 들어가기때문에 set으로 중복을 제거해준다. 이번엔 약수의 갯수가 필요하기때문에 len을 씌워서 리턴..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lLe10/btsBiokDRjs/i1ceKpfFbItm4ojlgHQiTK/img.png)
https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이과정 명예의 전당에 하나하나 저장하고 가장 낮은순위를 제거하며 매 k등을 리턴시키면 된다. 정답 def solution(k, score): answer = [] 명예의_전당 = [] for num in score: 명예의_전당.append(num) 명예의_전당.sort() if len(명예의_전당)>k: 명예의_전당.pop(0) answer.append(명예의_전당[0]) return ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bxjI4O/btsBitTmBBZ/bW2QggKQdi2qKK0EywST20/img.png)
https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이과정 que처럼 list로 변환하고 앞쪽부터 하나씩 뺴가면서 문제대로 x를 저장하고 저장하고 글자수를 센 다음에 같아지는 순간 문자열 갯수에 1을 더하고 처음으로 돌아간다. 정답 def solution(s): answer = 0 s = list(s) while s: x = s.pop(0) same = 1 different = 0 while s: temp = s.pop(0) if x ==..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/K3r1n/btsBip4e3f4/dMZEmZiPIpu00as70zBEL1/img.png)
https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이과정 현재 내 영역까지 자른다음 find로 찾으면 없을 떄 -1이 출력된다. 인덱싱은 0부터 시작이니 나오지않는 글자 .을 추가해서 find하면 된다. 정답 solution = lambda s: [('.'+s[:idx][::-1]).find(char) for idx, char in enumerate(s)]
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/5ndHV/btsBb7v3JBH/zMiyQf0wUi6ZBZyvOCeKY1/img.png)
https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이과정 p의 길이만큼 슬라이싱해서 int로 변환, 그걸 p와 크기비교한것을 int로 변환해 모두 합하면 총 갯수가 된다. 정답 solution = lambda t, p:sum([int(int(t[i-len(p):i])
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/m9h7f/btsA3QI16jx/0NjTiIU93dxVRt7wQEwXLk/img.png)
문제 풀이과정 문제에 한달의 길이는 28일로 고정이라하였으니 날짜 임포트보단 새로 함수를 만드는편이 좋아보여서 date함수로 연월일 문자열을 int의 일로 통합하는 함수를 제작했다. terms의 형식을 딕셔너리로 전환해 보다 사용하기 쉽고, 개월수가 아닌 일수로 전환하여 계산하기 쉽도록 했다. 준비된 도구들을가지고 각 열의 날짜를 연산해 초과한 약관의 번호를 append하였다. 정답 def date(datestr): year, month, day = map(int, datestr.split('.')) month += year*12 day += month*28 return day def solution(today, terms, privacies): answer = [] term = {} for i in t..