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

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

까루카라 2023. 7. 19. 14:11

다음에 올 숫자

다른 사람의 풀이도 분석해보자

a, b, c에 대입해서 풀었네 깔끔하다

 

다항식 더하기

예외에 대해서 처리해주는 것이 얼마나 중요한지를 깨닫게 해준 문제.

만약 계수가 1이라면? 계수가 생략되어서 따로 처리를 해주어야 한다. 

출력할 때 숫자가 0이라면 0을 따로 출력하지 않도록 따로 처리해주어야 한다. 예외를 처리하지 않아서 몇몇 케이스에서만 오류가 떠서 왜인지 생각하느라 애먹었던 문제였다. 

 

 

최빈값 구하기

공간적으로 비효율적인 코드같긴하다. 다른사람의 코드를 보자

enumerate()함수는 index와 원소에 동시에 접근한다. (index, 원소) 형태의 튜플을 반환한다. 

for문을 돌린 후에도 i가 0이라면, 즉, set(array)에 원소가 하나밖에 없다면 그 원소가 최빈값이다. 따라서 그 원소를 리턴한다. 

만약에, 같은 원소가 두개 이상이라면 for문이 여러번 돌아서 i가 0이 아닌 상태에서 array의 원소가 0개가 될 것이다. 그럼 while문을 빠져나오게 되는데, 그러면 -1을 리턴한다. 개똑똑이네,,, 댓글에도 다 감탄하는 댓글밖에 없다...

 

OX퀴즈

왜 이렇게 코드를 작성했냐면,,, 음수는 int()를 사용하지 못하는 줄 알았다..ㅋㅋㅋㅋㅋㅋㅋㅋ 그래서 따로 처리해준건데,, 아니었다. int() 사용가능함!!!!!!! 헷갈리지말 것. 음수를 사용하지 못하는 건 .indigit()였다. 뭔가 알긴아는데,, 헷갈리지말자

int() : 음수도 처리 가능

.isdigit() : 음수가 들어올 경우 False 반환

다시 고쳐주었다..!

다른 사람의 풀이를 보다가 육성으로 '미친거 아니야..?'란 소리가 나왔다... 열심히 하다 보면 나도 이런 코드를 짤 수 있을까..ㅜ

valid란 함수를 따로 정의해서 수식의 '=' 을 '==' 으로 replace해준다. 그다음 eval()함수를 사용하여 수식을 계산하여 return 해준다. 

solution함수에서는 이 수식의 결괏값이 True, False냐에 따라서 O, X를 return 한다. 

 

연속된 수의 합

뒤로 갈수록 꽤나 어렵다고 느껴짐. 변수 설정하는거나 변수를 local중 어디에 선언해야 하는지를 설정하는 것이 어려웠다.

다른 사람의 풀이

수학적 지식을 사용해서 푼 듯