Little bIT awesome

[프로그래머스] 코딩테스트 스터디 2일차 본문

코딩테스트/프로그래머스

[프로그래머스] 코딩테스트 스터디 2일차

까루카라 2023. 7. 10. 15:16

 

분수의 덧셈

math 라이브러리 이용하기 

최대 공약수 구하는 함수 math.gcd()

최소 공배수 구하는 함수 math.lmc()(파이썬 3.9부터 사용가능)

라이브러리 import 없이 풀기

for문으로 최대공약수 구하는 법 익히기

 

 

배열 두 배 만들기

리스트 속에 for문 쓰는거 익숙해지기

lambda식 익숙해지기

 

 

중복된 숫자 개수

array.count()로 배열 속 원소의 개수를 셀 수 있다.

 

중앙값 구하기

배열 정렬하기

1. array.sort(): array자체를 변화시킴

2. sorted(array): 매개변수로 결괏값을 받아야 한다. 

 

 

최빈값 구하기

배열을 만들어서 해당 원소의 인덱스에 count해준다음 최댓값을 가진 인덱스를 구한다. 

최댓값이 1개가 아니라면 -1을 리턴

근데 이렇게 풀면 공간이 많이 소비될 것 같음

다른 사람의 풀이를 보자

 

enumerate() 인덱스와 원소로 이루어진 튜플을 반환해줌

와... 이걸 어케 생각함

다른 블로그를 참고해서 이해한 바를 적어보자면 다음과 같다. 

 

set로 변환하면 중복이 제거된다. ex) [1, 2, 3, 3, 3, 4] -> [1, 2, 3, 4]

중복이 제거된 원소들을 enumerate하면서 '배열'에서 remove하기

남은 원소들은 사라진 원소보다 빈도수가 높은 원소일 것. 

마지막으로 남은 원소가 1가지라면 i 즉 집합의 인덱스는 0일 것이고 조건에 부합하여 a를 리턴한다. 

마지막으로 남은 원소가 1가지가 아니라면 집합의 인덱스는 0이 아닐 것이고 조건에 부합하지 않아 for문의 처음으로 돌아간다. 그런데 배열의 길이가 0이므로 while문의 조건에도 부합하지 않아 -1이 리턴될 것이다. 

 

 

특정 문자 제거하기

string에는 remove가 안된다. append도 안된다. 그냥 + 로 붙여야 한다. 

다른사람 풀이 참고해보니 replace로 letter를 ''로 대체하기도 하더라 진짜 똑똑이들..

 

문자 반복 출력하기

한줄로 하는거 너무 깔끔하네요.. 맨날 여러줄 for문만 주구장창 씀 다른 방식으로 풀어보는거 연습해보기

 

 

제곱수 판별하기

하긴했는데 시간 겁나 오래걸리는 풀이인듯

n ** 1/2 : 루트 씌운거랑 똑같음

그래서 이런식으로도 푸는듯!

 

자릿수 더하기