1일차 문제

양진혁·2021년 11월 1일
1

가입하게 된 이유

매일매일 코딩테스트를 하기 위해서 codewars라는 사이트를 찾았고 선택했다.
codewar는 kyu라는 레벨시스템이 존재하고 게임같이 문제를 풀면 레벨이 오르는 시스템이기에 만족해서 가입하게 되었다.

회원가입

회원가입을 하기 위해서 언어를 정하고 매우 간단한 문제를 풀어서 답이 맞으면 가입이 가능하다.
그렇게 가입을 하니 8kyu 라는 등급을 배정받았다.

문제 풀기

나는 문제로 7kyu 등급 문제 하나 6kyu 등급 문제 하나를 풀었다.

7kyu 문제는 Highest and Lowest로

high_and_low("1 2 3 4 5") # return "5 1"
high_and_low("1 2 -3 4 5") # return "5 -3"
high_and_low("1 9 3 4 -5") # return "9 -5"

처럼 숫자를 순서와 상관없이 입력해도 가장 높은 숫자 낮은 숫자가 나오게 하는 것이다.

def high_and_low(numbers):
  strlist = numbers.split()
  numlist = [int(i) for i in strlist]
  return str(max(numlist))+" "+str(min(numlist))

split 함수를 이용해서 문자열을 나누어 주었고
문자열을 int로 바꾸어 준 후 max, min을 사용해서 결과를 얻었다.

오랜만에 문제를 풀어서 str을 int로 바꾸는 법을 다시 공부했고
다 풀고 나니 더 줄일 수 있었는데 하는 아쉬움이 있었다.

6kyu 문제로는 IQ Test로

iq_test("2 4 7 8 10") => 3

iq_test("1 2 1 1") => 2

즉 짝수 혹은 홀수 중에서 서로 성질이 다른 것의 위치를 찾는 것이었다.

def iq_test(numbers):
  numlist = [int(i)%2 for i in numbers.split()]
  numt = numlist.index(True)
  nummf = numlist.index(False)
  if numlist.count(0)>=numlist.count(1):
    return numt +1
  else:
    return nummf +1 

짝수 홀수의 나머지를 구해서 count를 사용해서 0의 갯수가 많으면 1의 위치를 찾는 numt에 +1을 1의 갯수가 많으면 0의 위치를 찾는 nummf+1을 해서 값을 찾아냈다.

두 번째 문제는 시간이 오래걸렸고 count와 index를 검색해서 풀 수 있었다. 다른 답안들을 보니 더 짧고 간결한 코드가 있기에 매일 공부하며 분발해야겠다.

2개의 댓글

comment-user-thumbnail
2021년 11월 1일

코드워를 하시는군요! 코드워의 장점은 다른 사람들이 풀어놓은 best practices를 볼 수 있다는 점이죠! 고수들 답변을 보면서 자극받고 성장하는 재미가 있어요! 다른 사람들의 코드를 보고 따라하고 내걸로 만들면 곧 고수가 될겁니다! 화이팅:)

1개의 답글