2일차 문제

9496 단어 TILTIL

문제풀이

오늘은 총 4 문제를 풀었다.

처음 문제는 6kyu 문제로
unique_in_order('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
unique_in_order('ABBCcAD') == ['A', 'B', 'C', 'c', 'A', 'D']
unique_in_order([1,2,2,3,3]) == [1,2,3]

중복제거 문제였다.

def unique_in_order(iterable):
  new_list = []
  for i in range(0, len(iterable)-1):
    if iterable[i] != iterable[i+1]:
      new_list.append(iterable[i+1])
  return new_list

이렇게 문제를 풀어봤지만 맨 앞에 있는답이 나오지 않았다.
그래서 다시 풀어본 결과

def unique_in_order(iterable):
  new_list = []
  prev = None
  for i in iterable:
    if i != prev:
      new_list.append(i)
    prev = i
  return new_list

prev라는 변수를 none으로 지정하였고 다음 반복문을 돌릴때 prev 값이 i로 변하게끔 해서 문제를 풀어보니 해결할 수 있었다.

이 문제를 해결하고 7kyu로 단계가 올라간 것을 보면서 더욱 열심히 해야겠다는 생각을 하게 됐다.

두번째로 풀어본 문제는 6kyu 문제로
["a","b","c","d","f"] -> "e"
["O","Q","R","S"] -> "P"

빠져있는 연속적인 알파벳을 찾는 것이다.

def find_missing_letter(chars):
  new_list = []
  for i in chars:
    new_list.append(ord(i))
  for i in range(0, len(new_list) -1):
    if new_list[i]+1  != new_list[i+1]:
      return chr(new_list[i]+1)

이 문제는 아스키 코드를 사용해서 숫자로 변환하고 이어지지 않는 숫자를 찾은 후 다시 알파벳으로 변환해서 return 해봤다. 코드를 더 짧게 할 수 있었는데 부족함을 느꼈다.

세번째 문제 역시 6kyu 문제로
Narcissistic Number 를 찾는 것이다.
153은 해당하는 수이고
1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153

1654는 해당하지 않는다.
1^4 + 6^4 + 5^4 + 2^4 = 1 + 1296 + 625 + 16 = 1938

def narcissistic( value ):
  valuelist = list(str(value))
  new_list = []
  b = 0
  for i in valuelist:
    new_list.append(int(i)**len(valuelist))
  for i in range(0, len(new_list)):
    b += new_list[i]
  if b == value:
    return True
  else:
    return False

먼저 숫자를 문자열로 바꾼 후 리스트화 시켜 숫자 자릿수 만큼 제곱근을 하여 입력값과 비교해서 나올 수 있게 하였다.

마지막으로 푼 문제 역시 6kyu 문제로

array_diff([1,2],[1]) == [2]
array_diff([1,2,2,2,3],[2]) == [1,3]

a 요소가 b와 겹친다면 겹치는 모든 요소를 삭제하는 문제이다.

def array_diff(a, b):
  new_list= []
  for i in a:
    if i in b:
      pass
    else:
      new_list.append(i)
  return new_list

list를 하나 만들어서 a와 b에서 겹치는 i는 pass하고 그렇지 않은 걸 빈 list에 추가하는 방법으로 작성했다.

2일차 4문제를 풀고 코드를 짧고 단순하게 짜는 사람들 결과를 보고 주눅이 들었다.
그래도 어제에 비해서 같은 시간을 소요했지만 2문제를 더 풀 수 있었다는 것에 만족했다.
앞으로 일희일비 하지 않고 꾸준하게 더 어려운 문제를 풀 수 있도록 노력해야겠다.

좋은 웹페이지 즐겨찾기