-
7. 가운데 글자 가져오기코딩 테스트/Level 1 2019. 10. 5. 23:00반응형
https://programmers.co.kr/learn/courses/30/lessons/12903
파이썬
가장 흔한 해법일 겁니다.
def solution(s): length = len(s) center = length // 2 if length % 2: return s[center] else: return s[center - 1:center + 1]
꾸역꾸역 밀어 넣으면 한 줄로도 가능합니다만.
가독성이 좋지 않습니다.
반복된 // 연산, len(s) 정말 보기 싫군요...프로그래머는 반복을 싫어합니다.def solution(s): return s[len(s) // 2] if len(s) % 2 else s[len(s) // 2 - 1:len(s) // 2 + 1]
def solution(s): return s[len(s) // 2 - (0 if len(s) % 2 else 1) :len(s) // 2 + 1]
len(s) 반복 말고는 괜찮은 듯 합니다. 코딩 테스트에선 한 줄에 자존심을 걸기 때문에...
def solution(s): return s[(len(s) - 1) // 2 : len(s) // 2 + 1]
자바스크립트
function solution(s) { return s.slice((s.length - 1) / 2, s.length / 2 + 1); }
자바
class Solution { public String solution(String s) { return s.substring((s.length() - 1)/ 2, s.length() / 2 + 1); } }
고
func solution(s string) string { if len(s)&1 == 1 { return s[len(s)/2 : len(s)/2+1] } else { return s[len(s)/2-1 : len(s)/2+1] } }
func solution(s string) string { return s[(len(s)-1)/2 : len(s)/2+1] }
코틀린
class Solution { fun solution(s: String) = s.slice(((s.length - 1) / 2)..(s.length / 2)) }
C#
public class Solution { public string solution(string s) => (s.Length % 2 == 1) ? s.Substring(s.Length / 2, 1) : s.Substring(s.Length / 2 - 1, 2); }
RUST
fn get_middle_chars(input: &str) -> Option<String> { let len = input.chars().count(); if len == 0 { return None; } let middle_index = len / 2; let mut chars = input.chars(); let mut middle_chars = String::new(); for _ in 0..(middle_index - (1 - len % 2)) { chars.next(); } if len % 2 == 0 { middle_chars.push(chars.next()?); middle_chars.push(chars.next()?); } else { middle_chars.push(chars.next()?); } Some(middle_chars) } fn main() { let input_string = "안녕하세요"; match get_middle_chars(input_string) { Some(middle_chars) => println!("Middle characters: {}", middle_chars), None => println!("The input string is empty"), } }
fn get_middle_chars(input: &str) -> Option<String> { let len = input.chars().count(); if len == 0 { return None; } Some( input .chars() .skip(len / 2 + len % 2 - 1) .take(2 - len % 2) .collect() ) } fn main() { let input_string = "안녕하세요"; match get_middle_chars(input_string) { Some(middle_chars) => println!("Middle characters: {}", middle_chars), None => println!("The input string is empty"), } }
반응형