[코테 준비 : day07]

Choi·2023년 6월 28일
0

코딩테스트 준비

목록 보기
7/22

검색한다..안한다..한다..안한다..하지마!!!!

오늘도 돌아온 코테 준비 시간. lv2 쉽지않다. 그래서 답안을 찾아말아...고민을 하다가
정말 고민해도 모르겠다면 검색을 해서 이해하는 방향으로 공부했다. 세상엔 똑똑한 사람이
정말 많다는 걸 느끼면서 이 사람들과 경쟁해야한다는 것에 두려운 마음도 들었다. 하지만
난 쫄지않지. 꾸준함을 이길 것은 없으니 Keep going!

1.H-Index
https://school.programmers.co.kr/learn/courses/30/lessons/42747

H-Index는 과학자의 생산성과 영향력을 나타내는 지표이다. 논문 인용 횟수를 이용하여 H-Index를 구하라! 간단하게 인용 횟수를 내림차순으로 정렬하고 순회하며 조건문을 걸어주면 해결!

def solution(citations):
    citations.sort(reverse=True)
    for idx , citation in enumerate(citations):
        if idx >= citation:
            return idx
    print(citations)
    return len(citations)

2.귤 고르기
https://school.programmers.co.kr/learn/courses/30/lessons/138476

귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶다.한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어진다. 서로 다른 종류의 수의 최솟값을 return! counter를 사용하면 간단하게 해결!

Counter 생성자는 여러 형태의 데이터를 인자로 받는데요. 먼저 중복된 데이터가 저장된 배열을 인자로 넘기면 각 원소가 몇 번씩 나오는지가 저장된 객체를 얻게 된다.

from collections import Counter

def solution(k, tangerine):
    answer = 0
    c = Counter(tangerine).most_common()

    for i in range(len(c)):
        if c[i][1] >= k :
            answer+=1
            break
        else :
            k -= c[i][1]
            answer +=1

    return answer

3.점프와 순간이동
https://school.programmers.co.kr/learn/courses/30/lessons/12980

OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있다. 예를 들어 거리가 5만큼 떨어져 있는 장소로 가려고 한다.아이언 슈트를 입고 거리가 5만큼 떨어져 있는 장소로 갈 수 있는 경우의 수는 여러 가지이다. 단, 건전지 사용량을 줄이기 위해 점프로 이동하는 것은 최소로 하려고 한다. 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 return하는 solution 함수를 만들어라!

def solution(N):
    answer = 0
    while N > 0:
        answer += N % 2
        N //= 2
        print(answer)
        print(N)
    return answer

4.행렬의 곱셈
https://school.programmers.co.kr/learn/courses/30/lessons/12949

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성하라! numpy를 사용하면 아주 간단하게 해결. 이런 문제만 나왔으..정신차려!

import numpy as np
def solution(arr1, arr2):
    anum = np.array(arr1)
    bnum = np.array(arr2)
    print(anum)
    print(bnum)
    ## 행렬곱 처리하기
    answer = anum.dot(bnum)

    ## numpy행렬을 list로 변경
    answer = answer.tolist()
    return answer

5.의상
https://school.programmers.co.kr/learn/courses/30/lessons/42578

의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성하라.

def solution(clothes):
    answer=1
    clo={}
    for i in clothes:
        if i[1] in clo:
            clo[i[1]]+=1
        else:
            clo[i[1]]=1
    for i in clo.values():
        answer*=(i+1)
    return answer-1
profile
느려도 내 것으로 만드는게 좋잖아?

0개의 댓글