3일차 문제

양진혁·2021년 11월 3일
0

문제 풀이

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

첫번째 문제는 6kyu 문제로
wave("hello") => ["Hello", "hEllo", "heLlo", "helLo", "hellO"]

즉 파도타기 문제였다.

def wave(people):
  result_list = []
  for i in range(len(people)):
    people = people.lower()
    peoplelist = list(people)
    if peoplelist[i].isalpha():
      peoplelist[i] = people[i].upper()
      people = ''.join(peoplelist)
      result_list.append(people)
  return result_list

띄어쓰는 공간을 신경쓰지 않고 풀었지만 예시에 two words 라는 단어 때문에 알파벳인지 빈공간인지 확인하는 isalpha()를 써서 영어인 경우 대문자로 바꿔줬다.

두번째 문제는 6kyu 문제로
to_weird_case('String'); # => returns 'StRiNg'
to_weird_case('Weird string case') # => returns 'WeIrD StRiNg CaSe'

즉 홀수는 소문자 0부터 시작해서 짝수는 대문자로 만든다. 빈 공백이 생긴 후 단어는 다시 0부터 시작해야한다.

def to_weird_case(string):
  o = 0
  r = ''
  for i in string:
    if o %2 == 0:
      r += i.upper()
    else:
      r += i.lower()
    if i == " ":
      o = 0
    else:
      o +=1
  return r

순서를 0으로 지정해놓고 result라는 빈 변수를 만든 후 2로 나눠 나머지가 0인 경우 대문자 아닌경우 소문자로 지정해주고 만약 i가 빈 공백인경우 다시 0으로 바꿔준다.

세번째 문제는 6kyu 난이도 문제로
16 --> 1 + 6 = 7
942 --> 9 + 4 + 2 = 15 --> 1 + 5 = 6
132189 --> 1 + 3 + 2 + 1 + 8 + 9 = 24 --> 2 + 4 = 6
493193 --> 4 + 9 + 3 + 1 + 9 + 3 = 29 --> 2 + 9 = 11 --> 1 + 1 = 2

1자리 수가 될 때까지 결과값을 더하는 것이다.

def digital_root(n):
  result = 0
  while n>=10:
    for i in str(n):
      result +=int(i)
    n = result
    result = 0
  return n

while문을 사용해서 n이 두자릿수일때 계속 반복될 수 있게 작성했고
result에 결과값을 넣고 그 값을 n에 넣어주고 result를 다시 0으로 초기화해서 n이 한자리가 될 때까지 반복할 수 있도록 했다.

네번째 문제는 6kyu 난이도 문제로
parse("iiisdoso") ==> [8, 64]

i는 더하기
s는 제곱근
d는 마이너스
o는 출력을의미한다.

def parse(data):
  result = []
  res = 0
  for i in data:
    if i == "i":
      res+=1
    elif i == "d":
      res -=1
    elif i == "s":
      res**=2
    elif i == "o":
      result.append(res)
    else:
      pass
  return result

마지막 문제를 풀고 나니 단계가 6kyu로 승급했다.

배우고 느낀점

오늘 배운것은 isalpha()를 통해서 알파벳만 걸러낸 후 코드를 작성하는 법을 배웠고, 평소에 반복문을 사용할 때 for문을 위주로 사용했지만 3번째 문제를 풀면서 while문을 오랜만에 사용할 수 있었다.

느낀점은 처음 문제 풀 때 너무 느린 속도와 길어보이는 코드때문에 부끄러워서 올리기를 꺼려했다. 하지만 점점 푸는 속도도 빨라지고 느리더라도 천천히 발전하는 모습을 올리는게 중요하다는 것을 느꼈다.

앞으로 취업에 쓰이는 코딩 테스트 풀이와 자료고주 등 많은 것을 업로드 해야 겠다.

0개의 댓글