Task:

입력받은 이름을 가진 직원의 role을 return 해주는 문제. 

입력받은 이름을 가진 직원이 없을 경우 "Does not work here!"를 return한다.

employees라는 리스트는 preloading 되어 있으므로 그대로 사용하면 된다는 전제조건이 있었음.

employees의 구조는 아래와 같다.

 employees = [ {'first_name': "Dipper", 'last_name': "Pines", 'role': "Boss"}, ...... ]

중복되는 이름을 가진 직원은 없으며, 입력값은 'first name + 스페이스바 + last name' 혹은 'name + 스페이스바' 이런 식으로 주어진다는 것 같다.

내가 제대로 이해한 건가...? 다음부터는 문제를 그냥 복붙해야겠다. ;_;



My Solution:

만약 입력값이 name 한 단어로만 들어오면 first_name과 last_name중에 뭐랑 비교를 해야하는 건지 고민했는데

그냥 단순하게 저렇게 풀어보니 되길래. 

내가 영어를 잘 못해서 문제를 제대로 이해 못 한 건지,

name이 한 단어만 들어올 경우 어떤 포맷으로 들어오는지 확실히 이해하지 못했다. 때려 맞춘 셈 ^^;



Best Solution은 나와 풀이가 같으므로 생략.

return문 한 줄로 코드를 끝낼 수 있나 고심해봤지만 안 될 것 같아서 그냥 내가 푼 것 그대로 제출했는데,

다른 사람들도 그렇게 안 푼 것을 보니 이번 문제는 그렇게는 안 되는 문제였나보다. ^^*

'잡동 > programming practice' 카테고리의 다른 글

#6 [Codewars] Directions Reduction (Python)  (0) 2016.05.19
#5 [Codewars] Vowel Count (javascript)  (0) 2016.05.18
#3 [Codewars] Counting Duplicates  (0) 2016.05.09
#2 [Codewars] Flatten  (0) 2016.04.28
#1 [Codewars] Give me Diamond  (0) 2016.04.27

2주만에 쓰네... 사실 2주 동안 몇 개의 문제를 풀긴 했는데 포스팅은 하지 못했다.


Task:

주어진 string에서 중복해서 나오는 캐릭터의 종류(?)의 수를 구하는 문제. 즉

'aaabbcd' -> 2  ( 중복되어 나오는 캐릭터는 a, b 두개)

이런 식으로.



My Solution:





내가 생각하는 Best Solution - tpatja, nkrause323, alpen0 의 풀이


저렇게 return문 한 줄로 끝내려고 했는데 어떻게 해야 할 지 감이 안 왔다. 

내가 생각했을 땐 for loop는 set 안의 원소를 다 훑으니까 [c for c in set(text.lower()) ......] 이런 식으로 구현하면 리스트에 set의 모든 원소가 다 입력될 거라 생각했는데 아니었구나. if문이 뒤에 나오면 걸러지는구나?



배운 점

[i for i in <데이터구조> if <i에대한 조건>]

: 리스트에는 <i에 대한 조건>에 의해 걸러진 값들만 입력된다.



Task

list의 중첩도(?)를 한 단계 떨어뜨리는 문제.

아래에서 왼쪽은 실행 전, 오른쪽은 실행 후.

[1,2,3]  → [1,2,3]

[[[1,2,3],4,[5,6]] → [[1,2,3],4,5,6] 



My Solution



for 문에서 list 원소를 하나씩 뽑아다 쓰면 되는 걸 굳이 int로 루프 돌려서 index로 썼넹..... 헤헷.

아직 난 index로 array의 데이터에 접근하는 게 더 익숙하다.



내가 생각하는 Best Solution - slicklash's solution



extend라는 메소드가 있구나. 아무래도 내가 지금 진행하는 단계가 fundamental이어서 그런지

파이썬에서 제공하는 기능들을 익히는 문제가 출제되는 것 같다.

ㅎㅎㅎㅎㅎㅎㅎ파이썬 교재 정독해야겠다.




배운 점

original_list.extend(new_list)

: original_list에 new_list 의 원소들을 더해서 original_list를 확장해주는 메소드.


isinstance(a,b)

: a가 b의 type과 일치하면 true, 아니면 false를 리턴. 

자바로 치면 a instanceof b.




Task:


입력값 n에 맞게 다이아몬드 모양을 '*' 기호로 출력하는 문제.

n은 다이아몬드 모양의 middle line에 있는 *의 개수를 의미하며, 위 아래로 *의 개수는 2개씩 줄어든다.

즉 n=3일 때의 출력값은 아래와 같다.


  *

***

  *


이것을 위 그림처럼 출력하는 것이 아니라, "  *\n***\n  *" 이렇게 하나의 String으로 만들어 return하는 문제.

n은 홀수만 입력되며, invalid 값이 입력되면 None을 리턴하도록 한다.




My Solution:


ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

괜찮아... 생각 없이 풀어서 그래.... 첫 글이잖아...그래...힘내자

굉장히 부끄럽지만, 정신 차리자는 의미로 지우지 않고 업로드한다. 




내가 생각하는 Best Solution - Krernertok's solution


아...아름답다...





깨달음


1. String에 곱셈 operation을 할 수 있구나.... String에 대해서는 + 말고는 생각 안 해봤다.


2. 여태까지의 내 코딩 습관. 

결과만 맞으면 그만이라는 사고방식, 생각하기 귀찮아함, 얼른 답을 내고싶어하는 조급한 마음. 

심지어 누군가에게 검사받는 것도 아니고, 시간 제한이 있는 문제도 아니었는데 난 빨리 답을 내고 싶어서 

단순무식하게 말 그대로 "답만 내버렸다". 

힝. 반성합시다!!!


+ Recent posts