가운데 글자 가져오기
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한 사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s | return |
"abcde" | "c" |
"qwer" | "we" |
Python 코드
def solution(s): return s[(len(s)-1)//2 : len(s)//2+1]
- 찍수인 경우 // 연산자로 몫을 구하고, 홀수일 경우에도 Slicing으로 계산
def solution(s): answer = '' if len(s) % 2 == 1: return s[int(len(s)/2)] else: return s[int(len(s)/2)-1 : int(len(s)/2)+1]
* 참고 링크 : https://jeongchul.tistory.com/642
# 가운데 글자 가져오기 def solution(s): # 글자의 길이 s_length = len(s) # 글자의 길이가 홀수인 경우 가운데 글자를 뽑아내기 if s_length % 2 == 1: answer = s[s_length // 2] # 글자의 길이가 짝수인 경우 가운데 두 글자를 뽑아내기 if s_length % 2 == 0: answer = s[(s_length // 2) - 1:(s_length // 2) + 1] return answer
* 참고 링크 : https://greedysiru.tistory.com/381
- 나머지 연산자 %
어떤 정수를 2로 나누었을 때 나머지가 1이면 홀수, 0이면 짝수.
def solution(s): if len(s) % 2 == 1: return 가운데 값 #s의 길이를 2로 나눈 나머지가 1이면 = 홀수면 """ !POINT! 여기서 == 1은 쓰지 않아도 된다! 왜? 조건문에서는 '기냐 아니냐'를 보기 때문에, %를 2로 나눴기 때문에 0과 1의 값만 나오는 상황에서 숫자값 0은 False, 1은 True가 된다. """ #나머지가 1이 아니면 = 짝수면 else: return 가운데 값에서 +1, -1 값
- 나누기 연산자 //
def solution(s): if len(s) % 2 == 1: return s[len(s)//2] #s의 리스트 s[]를 만들고 = 해당 인덱스의 '값'을 출력하기 위해 #len(s)//2한 인덱스의 값을 반환 else: return 가운데 값에서 +_1 값
- 최종 코드
def solution(s): if len(s) % 2 == 1: return s[len(s)//2] else: return s[(len(s)//2-1) : (len(s)//2+1)] #짝수에서 출력하는 인덱스의 #-1값 == len(s)//2-1)과 #+1값 == (len(s)//2+1)을 함께 반환하자
* 파이썬에수 함수를 쓰는 공식
def 함수명(인풋): 코드1 코드2 ... return 아웃풋 #s라는 단어에 영향을 주는 solution라는 함수를 만들라고 했으니까 def solution(s): return 아웃풋
* 산술 연산자

* 참고 링크 : https://wikidocs.net/1153
* len() 함수 : 매개변수로 들어온 문자열의 길이를 반환
- 내부에 있는 문자의 갯수 및 공백을 포함한 카운팅을 하여 반환해주는 함수
- 문자열의 길이를 구할 때 용이
strlen = "HelloWorld" print(len(strlen)) # 결과값 10
* Slicing(슬라이싱) : 연속적인 객체들에 범위를 지정한 후 선택해서 객체들을 가져오는 방법
- 기본 형태
a[start : end : step]
- start : 슬라이싱을 시작할 시작 위치
- end : 슬라이싱을 끝낼 위치로 end는 포함되지 않음
- step : stride(보폭)라고도 불리며, 몇 개씩 끊어서 가져올지와 방향을 정하는 옵션
- 인덱스 값들의 위치
a = ['a', 'b', 'c', 'd', 'e'] # Index References # ------------------------------- # | a | b | c | d | e | # ------------------------------- # | 0 | 1 | 2 | 3 | 4 | // 양수의 경우 # ------------------------------- # | -5 | -4 | -3 | -2 | -1 | // 음수의 경우 # -------------------------------
- 특정 시작위치부터 끝까지 가져오기
- a[ start : ]
a = ['a', 'b', 'c', 'd', 'e'] a[ 1 : ] # result : ['b', 'c', 'd', 'e'] a[ -3 : ] # result : ['c', 'd', 'e']
- 시작점부터 특정 위치까지 가져오기
- a[ : end ]
a = ['a', 'b', 'c', 'd', 'e'] a[ : 2 ] # result : ['a', 'b']
- 특정 위치부터 특정 위치까지 모두 가져오기
- a[ start : end ]
a = ['a', 'b', 'c', 'd', 'e'] a[ 2 : 4 ] # result : ['c', 'd'] a[ -4 : -2 ] # result : ['b', 'c']
* 참고 링크 : https://twpower.github.io/119-python-list-slicing-examples
C++ 코드
#include <string> #include <vector> using namespace std; string solution(string s) { string answer = ""; static const size_t TWO = 2; const size_t length = s.length(); if(length % TWO == 0) { //짝수 answer += s[length / 2 - 1]; answer += s[length / 2]; } else { //홀수 answer += s[length / 2]; } return answer; }
* 참고 링크 : https://blockdmask.tistory.com/275
'코딩테스트 > Programmers' 카테고리의 다른 글
[코딩테스트/Programmers] 08_핸드폰 번호 가리기 (Lv1.) (0) | 2022.01.03 |
---|---|
[코딩테스트/Programmers] 07_서울에서 김서방 찾기 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 05_두 정수 사이의 합 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 04_x만큼 간격이 있는 n개의 숫자 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 03_짝수와 홀수 (Lv1.) (0) | 2021.12.26 |