728x90

Coding test 17

[Programmers] k의 개수

문제 설명 문제 풀이 과정 처음에는 string 형태로 변경하여 포함되어 있으면 answer +1로 하였지만, 11의 경우 1을 2번 count 해야 하여 실패 Counter로 갯수를 센 후 value 값 반환하여 개수를 answer에 더해줌. from collections import Counter def solution(i, j, k): answer = 0 for num in range(i, j+1): cnt = Counter(list(str(num))) if str(k) in list(map(str, cnt.keys())): answer += cnt[f'{k}'] return answer 다른 사람의 풀이 count 함수 쓰기... def solution(i, j, k): answer = sum([..

Coding test 2023.01.05

[Programmers] 두 정수 사이의 합

문제 설명 문제 풀이 과정 범위를 지정해주기 위해 a가 b보다 큰 경우 두 값을 교환, 값이 같을 경우 바로 리턴해줌. 그 후 범위 값을 더해줌. def solution(a, b): answer = 0 if a b: a, b = b, a for i in range(a, b+1): answer += i return answer 다른 사람의 풀이 a가 b보다 큰 경우 두 값 교환 for문을 사용하지 않고 범위의 sum을 사용하여 간단하게 해결 def adder(a, b): # 함수를 완성하세요 if a > b: a, b = b, a return sum(range(a,b+1)) - coding test url: https://school..

Coding test 2023.01.04

[Programmers] 크기가 작은 부분 문자열

문제 설명 문제 풀이 과정 t의 자릿수만큼 반복. 단, 남은 문자열이 p의 문자열 길이보다 작으면 중단 t에서 p의 자릿수만큼 slicing 후 비교, 작거나 같으면 answer에 += 1 def solution(t, p): answer = 0 for i in range(0,len(t)): if (len(t) - i) < len(p): break elif int(t[i:i+len(p)]) = int(t[i:i+len(p)]): answer += 1 return answer - coding test url: https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발..

Coding test 2023.01.04

[Programmers] 롤케이크 자르기

문제 설명 문제 풀이 과정 첫 번째 풀이 for문으로 돌아가면서 각각의 토핑 종류 개수가 같으면 answer에 +1 시간 초과로 실패 def solution(topping): answer = 0 for i in range(1, len(topping)+1): if len(set(topping[:i])) == len(set(topping[i:])): answer += 1 return answer 두 번째 풀이(다른 사람 풀이 참고) collections의 Counter 함수 사용 topping의 갯수를개수를 센 후, 하나씩 cnt dictionary에 넣어가면서 개수를 비교함. 단순 슬라이싱이 아닌 딕셔너리 변경으로 복잡도 감소 from collections import Counter def solution..

Coding test 2022.12.23

[Programmers] 할인 행사

문제 설명 문제 풀이 과정 want와 number를 key, value 형태의 dictionary로 변경 discount를 10일씩 slicing 하면서 dic과 동일할 때마다 answer + 1 from collections import Counter def solution(want, number, discount): answer = 0 dic = {item : val for item, val in zip(want, number)} for i in range(len(discount)-9): if dic == Counter(discount[i:i+10]): answer += 1 return answer - coding test url: https://school.programmers.co.kr/learn..

Coding test 2022.12.20

[2021 Dev-Matching] 로또의 최고 순위와 최저 순위

문제 설명 문제 풀이 과정 lottos에 있는 번호 중 win_nums에 있는 번호가 일치할 경우 count += 1 가려져있는 숫자 0이 전부 맞을 경우(count(0))는 최고 순위, 가려져 있지 않는 숫자만 일치할 경우가 최저 순위 맞는 개수가 0, 1개일 경우 6위이며, 맞는 개수에 따라 순위를 rank에 넣어줌 맞는 개수에 따라 값 반환 def solution(lottos, win_nums): rank = [6, 6, 5, 4, 3, 2, 1] count = 0 cnt_0 = lottos.count(0) for i in win_nums: if i in lottos: count += 1 return rank[count+ cnt_0], rank[count] - coding test url: http..

Coding test 2022.12.19

[KAKAO BLIND RECRUITMENT] 신고 결과 받기(python)

문제 설명 문제 풀이 과정 처음 문제를 보자마자 든 생각은 report를 set 처리하자! 였다.. 아무래도 중복을 먼저 처리하는 것이 가장 관건이라고 생각했다. 그 다음은 각 신고를 신고자 별로 dictionary형태로 만드는 것. 중복이 없으니 key를 신고자, value 값을 신고당한 사람으로 list로 만든 후 append 하는 것으로 결정함. 이제 신고 당한 횟수를 count해야 하는데, stop이라는 list를 만들어서 신고당한 사람을 넣었고, 그 중 k회 이상 신고당한 사람만 남도록 했다. 이제 dictionary에 있는 신고자와 신고 당한 사람을 각각 items로 풀어서 신고당한 사람이 stop에 있으면 count에 + 1 할 수 있도록 했다. from collections import d..

Coding test 2022.12.16

[KAKAO TECH INTERNSHIP 2022] 성격 유형 검사하기(python)

문제 설명 문제 풀이 과정 포인트는 앞에 있는 동점일 경우 앞의 유형 글자를 추가하는 것 def solution(survey, choices): sur = {'R': 0, 'T': 0, 'C': 0, 'F': 0, 'J': 0, 'M':0, 'A': 0, 'N':0} score = [3,2,1,0,1,2,3] answer = '' for tp, sc in zip(survey, choices): if sc 4: sur[tp[1:]] += score[sc-1] if sur['R'] >= sur['T']: answer += 'R' else: answer += 'T' if sur['C'] >= sur['F']: answer += 'C' ..

Coding test 2022.12.16

[Programmers] 삼총사

문제 설명 문제풀이 과정 combination: 지정 개수씩 중복 배열 없는 조합 만들어주는 함수 combination을 이용하여 해당 리스트에서 3개씩 중복 없는 조합을 만들어 줌 list(map(sum, comb)): 조합의 sum을 map을 이용하여 진행하여 list로 만들어줌 answer에 합이 0인 부분을 count하여 더해줌 from itertools import combinations def solution(number): answer = 0 comb = list(combinations(number, 3)) cnt = list(map(sum, comb)) answer += cnt.count(0) return answer 이건 진짜 잘 짰다. 만족하는 코드 - coding test url: h..

Coding test 2022.12.12
728x90