ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5. 서울에서 김서방 찾기
    코딩 테스트/Level 1 2019. 10. 3. 22:37
    반응형

    https://programmers.co.kr/learn/courses/30/lessons/12919

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

    파이썬

    def solution(seoul):
        for index, each in enumerate(seoul):
            if each == 'Kim':
                return f'김서방은 {index}에 있다'

    이렇게 하나 하나 찾아봐도 되겠지만,
    파이썬에서는 내장함수를 이용하는 것이 더 빠른 경우가 많다. 
    내장함수는 C언어로 작성된 경우가 많아서... 

    def solution(seoul):
        return f"김서방은 {seoul.index('Kim')}에 있다"

     

    자바스크립트

    function solution(seoul) {
        return `김서방은 ${seoul.indexOf('Kim')}에 있다`;
    }

    자바

    고전적인 스타일도 하나 있어야... 

    class Solution {
        public String solution(String[] seoul) {
            String ans = "";
            for (int i = 0; i < seoul.length; i++) {
                if (seoul[i].equals("Kim")) {
                    ans = String.valueOf(i);
                    break;
                }
            }
            return "김서방은 " + ans + "에 있다";
        }
    }

    자바로도 한 줄 코딩이 가능합니다. 배열을 리스트로 변환 후 indexOf 메소드를 사용했습니다. 

    리스트 변환에 대해 더 알고 싶은 분은 다음 링크를 참고 : http://iloveulhj.github.io/posts/java/java-Arrays.asList.html

    class Solution {
        public String solution(String[] seoul) {
            return "김서방은 " + Arrays.asList(seoul).indexOf("Kim") + "에 있다";
        }
    }

    고의 for range 도 깔끔하죠?

    (파이썬을 닮았습니다. 하지만 파이썬은 이런 경우 range를 안 쓰고 enumerate를 쓰는데.... -0-)

    import "strconv"
    
    func solution(seoul []string) string {
        for i, s := range seoul {
            if s == "Kim" {
                return "김서방은 " + strconv.Itoa(i) + "에 있다"
            }
        }
        return ""
    }
    import "fmt"
    
    func solution(seoul []string) string {
    	for i, v := range seoul {
    		if v == "Kim" {
    			return fmt.Sprintf("김서방은 %d에 있다", i)
    		}
    	}
    	return ""
    }

     

    코틀린

    class Solution {
        fun solution(seoul: Array<String>): String {
            for ((index, name) in seoul.withIndex()) {
                if (name == "Kim") {
                    return "김서방은 " + index + "에 있다"
                }
            }
            return ""
        }
    }
    class Solution {
        fun solution(seoul: Array<String>) = "김서방은 " + seoul.indexOf("Kim") + "에 있다"
    }
    class Solution {
        fun solution(seoul: Array<String>) = "김서방은 ${seoul.indexOf("Kim")}에 있다"
    }

    C#

    using System;
    
    public class Solution
    {
        public string solution(string[] seoul) => $"김서방은 {Array.IndexOf(seoul, "Kim")}에 있다";
    }
    public class Solution
    {
        public string solution(string[] seoul)
        {
            int i = 0;
            for (; i < seoul.Length; i++)
            {
                if (seoul[i] == "Kim")
                {
                    break;
                }
            }
            return $"김서방은 {i}에 있다";
        }
    }
    public class Solution
    {
        public string solution(string[] seoul)
        {
            for (int i = 0; i < seoul.Length; i++)
            {
                if (seoul[i] == "Kim")
                {
                    return $"김서방은 {i}에 있다";
                }
            }
            return "";
        }
    }

    DART

    String solution(List<String> seoul) {
      return '김서방은 ${seoul.indexOf('Kim')}에 있다';
    }

    RUST

    fn main() {
        println!("{}", solution(vec!["Jane", "Kim"]));
    }
    
    fn solution(seoul: Vec<&str>) -> String {
        for (i, each) in seoul.iter().enumerate() {
            if each == &"Kim" {
                return format!("김서방은 {}에 있다", i);
            }
        }
        return "".to_owned();
    }
    반응형
Designed by Tistory.