codekata #11

신승호·2021년 5월 13일

codekata

목록 보기
10/15

codekata_0511


문제

문자로 구성된 배열을 input으로 전달하면, 문자를 뒤집어서 return 해주세요.

  • 새로운 배열을 선언하면 안 됩니다.
  • 인자로 받은 배열을 수정해서 만들어주세요.
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

need to know

  1. 새로운 배열이 아닌 그냥 기존배열으로 만드는거
  2. 리스트 인덱스로 하나씩 훑으면서 0이면 뺴서 뒤에다가 넣어준다 .. !

문자로 짜봐

  1. 자리만 바꿔주려면, 먼저 일단 하나 빼 놓을게 필요하기때문에 빈 문자열 하나 만들자temp=" "
  2. 그리고 배열의 수가 짝수 일때는 그냥 반 나눠서 바꿔주면 되고, 홀 수 일때는 배열의 길이에서 반 나눈거에 1을 더해줄꺼라 odd라는 변수를 만들어서 하나 주자
  3. for문돌릴때 배열의 길이를 반으로 나눈걸 주고, 홀 수 일때는 1을 더해주자
  4. for문돌아갈 때 먼저 맨앞의 숫자를 temp로 저장하고, 맨앞자리 숫자를 맨 뒷자리숫자로 저장하고, 맨 뒷자리 숫자를 저장해 두었던 맨 앞자리 숫자 temp를 주자
  5. 그럼 끝

정답

def reverse_string(s):
  temp = ""
  odd = 1 if len(s) % 2 == 1 else 0
  for i in range(len(s)//2+odd):
      temp = s[i] 			# 먼저 맨앞의 숫자를 `temp`로 저장
      s[i] = s[-1-i] 			# 맨앞자리 숫자를 맨 뒷자리숫자로 저장
      s[-1-i] = temp 			# 맨 뒷자리 숫자를 저장해 두었던 맨 앞자리 숫자 `temp`를 저장
  return s

참고

  • odd = 1 if len(s) % 2 == 1 else 0 if문 일렬로 사용하기
  • [-1]
profile
신승홉니다

0개의 댓글