728x90

분류 전체보기 93

[Algorithm] 정렬 알고리즘_1

06-1 정렬 알고리즘 정렬이란? 정렬(sorting): 이름, 학번, 학점 등의 키(key)를 항목값의 대소 관계에 따라 데이터 집합을 일정한 순서로 바꾸어 늘여놓는 작업을 말합니다. 오름차순(ascending order): 값이 작은 데이터를 앞쪽에 늘어놓는 것 내림차순(descending order): 값이 큰 데이터를 앞쪽에 늘어놓는 것 정렬 알고리즘의 안정성 안정적인 알고리즘: 값이 같은 원소의 순서가 정렬한 후에도 유지되는 것 안정적이지 않은 알고리즘: 정렬한 후에도 우너래의 순서가 유지된다는 보장을 할 수 없는 것 내부 정렬과 외부 정렬 내부 정렬(internal sorting): 정렬할 모든 데이터를 하나의 배열에 저장할 수 있는 경우에 사용하는 알고리즘 외부 정렬(external sort..

Code/Algorithm 2022.12.19

[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

[Algorithm] 재귀 알고리즘_4(8퀸 문제)

05-4 8퀸 문제 8퀸 문제 알아보기 8퀸 문제(8-Queen prooblem)는 재귀 알고리즘을 설명할 때 자주 나오는 예제입니다. 8개의 퀸이 서로 공격하여 잡을 수 없도록 8 x 8 체스판에 배치하세요. 분기 작업으로 문제 해결하기 실습 5-7 각 열에 퀸을 1개 배치하는 조합을 재귀적으로 나열하기 # 각 열에 퀸을 1개 배치하는 조합을 재귀적으로 나열하기 pos = [0] * 8 # 각 열에서 퀸의 위치를 출력 def put() -> None: """각 열에 배치한 퀸의 위치를 출력""" for i in range(8): print(f'{pos[i]:2}',end='') print() def set(i: int) -> None: """i열에 퀸을 배치""" for j in range(8): po..

Code/Algorithm 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

[Programmers] 콜라 문제

문제 설명 문제 풀이 과정 첫 번째 풀이: 테스트 케이스 성공, 실제 제출 실패 def solution(a, b, n): answer = 0 while n >= a: val, div = divmod(n, a) answer += val n = (val*b) + div return answer 두 번째 풀이: answer에 * b 하는 걸 추가하는 걸 잊었다..! 성공! def solution(a, b, n): answer = 0 while n >= a: val, div = divmod(n, a) answer += (val*b) n = (val*b) + div return answer - coding test url: https://school.programmers.co.kr/learn/courses/30/..

Coding test 2022.12.12

[Programmers] 햄버거 만들기

문제 설명 문제 풀이 과정 ingredient의 원소를 하나씩 s에 담고, 뒤에서 4번째부터 만약에 [1, 2, 3, 1]과 동일하다면 answer += 1 하기 초반에 너무 복잡하게 생각했다. def solution(ingredient): answer = 0 s = [] for i in ingredient: s.append(i) if s[-4:] == [1, 2, 3, 1]: answer += 1 del s[-4:] return answer - coding test url: https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, ..

Coding test 2022.12.11

[Programmers] 푸드 파이트 대회

문제 설명 문제 풀이 과정 비교적 쉽게 푼 문제 index 1번부터 2로 나눈 몫만큼 answer에 string type으로 추가해주고, 0과 뒤집은 answer를 붙여준 방식 def solution(food): answer = '' for i in range(1, len(food)): cnt = food[i] // 2 answer += str(i) * cnt ans = answer[-1::-1] answer = answer + '0' + ans return answer 다른 사람 풀이 def solution(food): answer = '' for i,n in enumerate(food[1:]): answer += str(i+1) * (n//2) return answer + "0" + answer[::..

Coding test 2022.12.11
728x90