[Coding Test] (1) 프로그래머스 스킬체크 Lv.1

2025. 2. 12. 15:50Coding Test/Kotlin

블로그는 비영리로 운영되고 있습니다.

차후 저작권 문제가 발생할 시, 해당 글은 삭제하도록 하겠습니다.


 

오늘부터 코딩테스트 연습을 해보려고 합니다.

처음이라서 많이 헤메겠지만 꾸준히 하다보면 나아질거라고 믿습니다!

 

https://school.programmers.co.kr/skill_checks

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

먼저 레벨 1부터 시작해봅시다!

 

 

제가 상상하던 코딩테스트랑은 뭔가 좀 다르네요! 입출력 예시가 있는점부터 난이도가 많이 내려가네요!

제한사항은 's는 길이가 1 이상, 100이하인 스트링입니다.' 이부분을 조건문으로 체크하라는 뜻인지, 아니면 항상 저 값이 넘어올테니 생각하고 코딩을 짜라는건지 모르겠네요.

 

 

우선 바로 생각난건 길이로 짜르고, 문자열 가져오기 입니다. 한번 시도해보겠습니다.

 

앗, 문제를 읽어보니까 제가 놓친 부분이 있었습니다.

'단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.'

그렇다면, 처음에 문자열 길이를 체크하고, 문자열 길이가 짝수인 경우에만 조건문을 실행하면 될 것 같습니다.

 

 

여러분.. 제가 깜빡했네요. Kotlin에는 삼항 연산자가 없습니다! 다시 하겠습니다!

 

 

이대로 제출하기전에 그래도 추가 조건문만 작업해서 제출하겠습니다.

 

아니.. 제가 놓친 부분이 더 있었네요. 문제가 1개가 아니라 2개였습니다!

 

블로그를 쓰면서 코딩테스트를 하니까 시간이 금방금방 가네요. 이번에는 뭐가 상당히 많네요. 일단 위에서부터 천천히 읽어보기 전에! 이 문제에서 원하는 결과값이 뭔지 파악부터 해봅시다.

 

  1. survey의 원소는 "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" 중 하나입니다.
  2. survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
  3. survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.

 

'survey'는 설문조사에 사용되는 단어입니다. 즉, 설문조사 관련된 코드네요.

위 2번과 3번은 무슨 말인지 와닿지않네요. "RT"에서 첫 번째, 두 번째 글자를 뜻하는건지.. 이건 글을 좀 더 읽다보면 보일 것 같습니다.

 

먼저 문제설명부터 파악해보겠습니다.

 

설문조사가 아니라, 성격유형 검사 내용이었네요.

 

이제 좀 와닿네요. MBTI 검사랑 유사하네요. 약관 동의는 +1점, 매우 비동의는 -3점이라는 뜻이네요.

 

'위 예시처럼 네오형이 비동의, 어피치형이 동의인 경우만 주어지지 않고, 질문에 따라 네오형이 동의, 어피치형이 비동의인 경우도 주어질 수 있습니다.' 이것도 중요한 문장이네요. 단순히 +, -가 아니라, 문제에 따라서 다르게 해석 될 수 있다고합니다.

 

 

1번 문제에서는 (-) 선택지를 선택하면, 'A'형 성격 유형의 점수를, (+) 선택지를 선택하면 'N'형 성격 유형 점수를 받습니다.

 

이제 좀 와닿네요.

 

 

여기서 survey의 각각의 요소는 어떠한 성격 유형 검사인지 말해줍니다. 'AN'에서 5를 선택하면, '약간 동의'이기 때문에 'N' 성격유형 +1점이라는 뜻이겠네요.

이를 바탕으로 코드를 작성해봅시다. 블로그 글과 같이 하려니까 시간이 8분밖에 안남았네요.

 

급하니까 얼른 해봅시다!

 

앗! 시간을 못지켜서 종료가 되버렸어요ㅠㅠ

 

이제 알았는데, 밑에 제출하기는 문제마다 눌러줬어야 하는거네요.

다시 도전해보겠습니다!

 

 

제가 기억하기로는 소문자는 "97 ~ 122", 대문자는 "65 ~ 90"입니다.

빨리빨리 해보도록하겠습니다.

 

 

앗, 공백에 대한 처리를 못했네요. 다시 수정하겠습니다!

 

 

 

채점 후 결과를 누르니까 위 처럼 내부적으로 뭔가를 하나보네요.

다행히 통과해서 다음 문제로 넘어가겠습니다. 시간은 30분정도 남았네요.

 

 

게임에서 각각 스테이지별로 도전자 수와 실패자 수를 가지고 실패율을 계산하라는 것 같습니다.

'실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.'

이게.. 1단계..? 글을 작성하다보니 27분정도 시간이 남았는데, 시간내에 풀 수 있겠죠..?

 

 

하다보니 생각보다 난이도가 있는데요..? 처음에는 스테이지 클리어에 대한 부분을 까먹고 코드를 짰다가 다시 수정했습니다ㅠ 시간이 촉박해서 실패한 스샷도 못찍었네요..

 

제 심정이 느껴지시나요..? 정말 촉박했습니다. 아니 갑자기 왜 이번 체점은 테스트가 27번까지 있는건지.. 진짜 조마조마했어요.

 

 

그나저나 코딩테스트.. 제 생각보다 더 재밌는데요?

이번 코딩테스트에서는 아쉬운 점을 뽑자면, 제가 아직 Kotlin 문법에는 익숙하지 않아서 다양한 메서드를 못써본게 아쉽네요. 

당분간은 Lv.1만 도전해야겠습니다.

 

다음 포스트에서는, 이번 문제를 가지고 더 나은 방법이 없는지 좀 더 고민해보는 글을 작성해보겠습니다.

처음에 했던 문제2번이 계속 맘에 걸리네요. 문제를 이해하는데만 시간이 훌쩍 지나버렸어요ㅠ

나름 책을 많이 읽는편이라고 생각해서 속독이나 해독에 관해서 자신이 있었는데.. 자신감이 확 떨어져버렸어요. 코딩이 문제가 아니라 문제부터 잘 해석하는게 먼저네요ㅠ

 

다음 코딩테스트 포스트를 작성하기 전에, Kotlin 문법에 대한 포스트를 먼저 작성하고 시작하겠습니다~!

조건문, 반복문, 문자열, 해시, 정렬에 관해서 다루겠습니다. 이걸 먼저 하고 시작하는게 맞을 것 같네요!