이직하고만다(분노)

99클럽 코테 스터디 1일차 TIL - 첫 만남은 너무 어!려!워!

xxo_ohii 2024. 5. 20. 23:10
728x90

▶ 오늘의 학습키워드

: 해시(HASH)

 

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

프로그래머스 > 해시 > 폰켓몬

 

▶ 공부한 내용 본인의 언어로 정리하기

def solution(nums):
    count = 0
    answer = ""
    # n/2 갯수의 폰켓몬을 골라야함
    # 다양한 숫자있으면 경우의 수가 다양함
    
    # 우선 갯수를 뽑는 함수 len() : 문자열길이 반환 을 사용함 
    count = len(nums)/2
    # 랜덤으로 많은 종류의 숫자를 뽑을 수 있게하기
    # 근데 중복은 피하고 싶어하는 듯 함.
    # set() 함수 써서 중복제거
    nums_tmp = set(nums)
    # 중복제거 된 값들 리스트화
    nums_tmp_cnt = len(list(nums_tmp))
    
    answer = min(count,nums_tmp_cnt)

    return answer

 

▶ 오늘의 회고

 

첫 코테 스터디 문제는 프로그래머스의 1단계 폰켓몬 문제였다.

문제를 처음 읽었을때 지문이 너무 길어서 수능 공부하던 시절로 돌아간 기분이었다.

자세히 읽어보면 간단한 질문의 문제인데 왜 이렇게까지 어렵게 썼을까 생각해보니

개발자들은 코딩하는 실력은 비슷 비슷하니까 그 중에 독해력 좋고 말이 잘 통하는 개발자를 뽑고싶어서

이렇게 문제를 낸게 아닌가? 라는 결론을 도출 할 수 있었다.

 

나는 약간의 난독증이 있어서 수 없이 지문을 읽은결과

내가 얻은 힌트는

 

1. 만약 폰켓몬이 6마리가 있다면, 그중 6/2 = 3마리를 가질 수 있다.

2. 최대한 다양한 종류의 폰켓몬을 가지길 원한다 = 즉, 중복을 최소화 해야한다.

 

처음에는 반복문을 돌려서 하나의 번호 기준점을 잡고

나머지 번호의 폰켄몬을 비교하여 나열한 뒤

중복이 있는 번호들은 제거한 후 나머지 번호들과의 합으로 생긴 리스트의

숫자를 세야하나 고민했지만.

 

파이썬은 생각보다 간단하게 바꿀 수 있어서

잠시 파이썬을 선택한 것을 잘했다고 생각하며 문제를 풀었다.

def solution(num):
	count = 0
    answer = "

 

먼저 def 이름(): 로 함수선언을 해준 후 

인풋으로 들어올 nums를 담아준다.

 

밑에서 쓸 변수인 count 를 0으로 초기화 해주고

답으로 리턴할 answer도 초기화 해준다.

 

count = len(nums)/2

 

len() 함수를 써서 리스트에 들어가는 원소의 개수를 추출한 뒤

ex) [2,1,3,4] => 4 개

총 N 마리의 폰켓몬 중 N/2 개를 고를 수 있기 때문에

/ 2 를 했는데...

 

다 풀고 스터디에서 알게된건 파이썬에서 나눗셈 연산에는 여러가지 종류가 있는데

함수명 사용법 예시
/ 가장 기본적인 나눗셈으로 몫과 나머지까지 연산되는 float형이다. 7 / 2 = 3.xxxx.....(생략)
// 나눗셈을 한 뒤 몫을 반환한다. 7 // 2 = 3
% 나눗셈을 한 뒤 몫을 제외한 나머지값을 반환한다 7 % 2 = 1

 

오잉 왜 표의 색칠이 안될까요

 

 

그럼 상수를 구해야하는 나는

len(nums)/2 가 아닌 len(nums)//2 라고 하는게 더 좋은 방향인 듯 하다.

 

    nums_tmp = set(nums)
    # 중복제거 된 값들 리스트화
    nums_tmp_cnt = len(list(nums_tmp))

 

고를 수 있는 폰켓몬의 갯수를 count에 담은 후

인풋으로 받은 리스트의 중복제거를 위해서 set함수를 사용했다.

 

set함수는 중복제거를 하는 대신 자기 맘대로 정렬하는 버릇이 있어서

이를 보완할 수 있는 함수가 없는지 찾아봤는데..

 

TODO.

아직은 못 찾아서 알게된다면 정리하도록 하겠음...ㅎㅎ;;

 

아무튼 그렇게 정리된 값을 리스트화 한 뒤

이또한 len()함수를 써서 갯수를 세었다.

 

   answer = min(count,nums_tmp_cnt)

   return answer

 

그리고 min함수를 써서 

둘 중 더 작은 수를 반환할 수 있도록했다!

 

메타버스 속 쭈구리

 

첫 스터디 시간이었는데

 

온라인으로 스터디를 했는데도 불구하고...

극 i 인 나는 왜 기가 빨리는가...

 

그래도 너무 재미있었고 유익했던 시간이었다.

 

내일도 오전에 문제 내주시면 회사에서 짬날때마다 풀어봐야지

후우우우우우우

=33

 

대학교때도 하기싫어서 도망간 코테공부를 지금에서야 하네,,ㅜㅜ

 

 

 

728x90