99클럽 코테 스터디 1일차 TIL - 첫 만남은 너무 어!려!워!
▶ 오늘의 학습키워드
: 해시(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
대학교때도 하기싫어서 도망간 코테공부를 지금에서야 하네,,ㅜㅜ