본문 바로가기

전체 글91

[파이썬] 파일명 정렬 - 2018 KAKAO BLIND RECRUITMENT [CODING TEST #43] https://school.programmers.co.kr/learn/courses/30/lessons/17686 리스트를 만드는 건 어렵지 않지만 정렬 방식이 조금 까다로웠다. 정렬할 때 HEAD 기준, HEAD가 같으면 NUMBER 기준으로 정렬하는데 다짜고짜 HEAD -> NUMBER 순으로 정렬하면 HEAD로 정렬한 정보가 사라지고, 역순으로 해도 대부분 케이스에서 실패한다. 그런데 파이썬에서 sorted 함수를 쓸 때, key를 지정할 때 (key1, key2) 이런 식으로 key1으로 우선 정렬하고, 정렬을 유지하면서 key2로 정렬이 가능하더라. 지식이 늘었다. sorted(LIST, key = lambda x : (x[1], x[2])) def solution(files): answer =.. 2022. 8. 6.
[파이썬] 괄호 회전하기 - 월간 코드 챌린지 시즌2 [CODING TEST #42] https://school.programmers.co.kr/learn/courses/30/lessons/76502 괄호 문자열 문제는 Stack을 이용하는 대표적인 유형 중 하나이다. stack = [ ] 를 for문 외부에 정의했다가 테스트 케이스 성공률 21%를 맛보았다. 그런데 어째서 샘플 4개는 전부 통과했던걸까... 억울하다고.. def solution(s): answer = 0 gwalho_list = ['(','[','{'] pair = {')':'(', ']':'[', '}':'{'} for i in range(len(s)): stack = [] flag = True temp = s[0] s = s[1:] + temp # 왼쪽으로 밀기 for alpha in s: if alpha in gw.. 2022. 8. 6.
Okoshite, Yuushinron - RADWIMPS 날은 덥고, 공부는 하기 싫어서 집중이 안 될때는 노래를 틀어놓고 멍때리고 있는다. 지금도 Kaggle 혼자 조금 해보다가 마주한 그런 순간들 중 하나인데, 심심해서 글이라도 쓰려고.. 몇 달 전부터 JPOP이랑 일본 밴드 노래에 빠지니까 다른 노래를 들을 틈이 없다. 집중도 잘 되고 너무 좋음. Okoshite랑 Yuushinron은 RADWIMPS 4집 앨범 대표곡인데, 호불호 없이 좋은 곡이라 생각함. 강.추 https://www.youtube.com/watch?v=aV3Fq1mvY6o&ab_channel=RADWIMPS-Topic https://www.youtube.com/watch?v=c2y8Ba3WwPY&ab_channel=RADWIMPS 2022. 8. 5.
[파이썬] 방금그곡 - 2018 KAKAO BLIND RECRUITMENT [CODING TEST #41] https://school.programmers.co.kr/learn/courses/30/lessons/17683# musicinfos 속 정보들을 토큰화하여 리스트에 저장 '#'이 붙은 멜로디는 replace() 함수를 이용하여 소문자로 치환 ( 'C#' -> 'c'로 치환) 각 악보별로 재생 시간을 계산 m과 fixed_melody의 길이에 따라 구분. len(m) < len(fixed_melody) 이면, 그냥 주어진 fixed_melody를 한 번 반복한 뒤 재생 시간만큼 슬라이싱. 그리고 m이 그 안에 있는지 check 그 외의 경우에는, fixed_melody를 적어도 len(m)의 2배 이상만큼 반복시켜야 한다. 아래 테스트 케이스의 경우, len(m) = 12이고 FOO의 멜로디 길이는 3.. 2022. 8. 4.
[파이썬] 가운데 글자 가져오기 [CODING TEST #40] https://school.programmers.co.kr/learn/courses/30/lessons/12903 주의사항으로는, 짝수 case에서 len(s)/2는 float type이기 때문에 그대로 string index로 넣으면 error가 발생한다. int()로 변환해줄 것. def solution(s): answer = '' if len(s)%2==1: # 홀수 case mid = len(s)//2 answer += s[mid] else: # 짝수 case mid1 = int(len(s)/2) - 1 mid2 = mid1 + 1 answer = answer + s[mid1] + s[mid2] return answer 2022. 8. 4.
[파이썬] 압축 - 2018 KAKAO BLIND RECRUITMENT [CODING TEST #39] https://school.programmers.co.kr/learn/courses/30/lessons/17684 알파벳에 대한 딕셔너리 alpha_dict를 미리 만든다. 그리고 msg 내 word를 살펴 보면서 alpha_dict에 없는 단어는 alpha_dict 맨 끝에 추가하고, 마지막으로 살펴본 글자부터 압축을 다시 시작한다. 구현 조건이 은근 까다로웠던 것 같다. 두 가지 조건을 잘 구현해야 한다. 첫 번째 알파벳은 무조건 alpha_dict에 존재하므로, 다음 단어를 스킵할 때 len(word) == 1의 경우는 스킵하면 안 된다. 무조건 alpha_dict에 있기 때문. 그래서 첫 글자에 대한 코드는 while문 앞에 따로 구현하였다. word가 마지막 글자까지 오면 해당 idx를 저장하고.. 2022. 8. 3.
[파이썬] 예상 대진표 - 2017 팁스타운 [CODING TEST #38] https://school.programmers.co.kr/learn/courses/30/lessons/12985 찾고 싶은 결과의 수가 붙어 있는 홀,짝수이면서 짝수가 더 큰 경우 ex) 5,6 처럼 정해져 있고, 다음 대진 수를 결정하는 방법도 간단하니 직접 계산하기로 했다. a와 b를 2로 나누면서 루프를 돌기 때문에 최악의 수여도 최대 20회밖에 돌지 않음. import math def solution(n,a,b): answer = 0 count = 1 while True: if abs(a - b) == 1: # a와 b와 1 차이 CHECK. if a > b and a%2==0 and b%2==1: return count elif a < b and a%2==1 and b%2==0: return .. 2022. 8. 3.
[파이썬] 핸드폰 번호 가리기 [CODING TEST #37] https://school.programmers.co.kr/learn/courses/30/lessons/12948 날먹 def solution(phone_number): answer = '*' * (len(phone_number)-4) + phone_number[-4:] return answer 2022. 8. 3.
[파이썬] 실패율 - 2019 KAKAO BLIND RECRUITMENT [CODING TEST #36] https://school.programmers.co.kr/learn/courses/30/lessons/42889 두 개의 딕셔너리를 만든다. 1. users : 각 스테이지별 막힌 유저수를 기록 2. fail : 각 스테이지별로 계산한 실패율을 기록 users는 모든 스테이지를 통과한 경우 N+1라고 표기하는데, 실패율은 1~N까지만 계산하면 된다. 전체 유저수를 임시 변수값에 저장한 뒤, 1스테이지부터 실패 유저수 / 도달한 유저수를 계산하여 fail에 저장한다. 이후, 전체 유저수에서 실패 유저수를 빼면 다음 스테이지에 도달한 유저수를 계산할 수 있다. 도달한 유저수가 진작에 0이 되어 0/0을 계산하게 되면 에러가 난다. 그러므로 0일 경우에는 fail = 0으로 저장하는 조건을 추가한다. 그리고.. 2022. 8. 3.
728x90