리눅스를, 우분투를 처음 설치해서 사용했을 때 의미를 모르고 무작정 따라했던 두 가지 명령어



apt-get update

: 사용 가능한 패키지들과 그 버전들의 리스트를 업데이트 하는 명령어. 

 실제 패키지 버전을 업그레이드하는 것이 아니라 최신 버전 패키지가 있는지를 확인하고 내 우분투에 알려주는 용도.



apt-get upgrade

: 내 우분투에 있는 패키지들을 실제로 최신 버전으로 업그레이드 하는 명령어. 

여기서 최신 버전이란 위의 apt-get update 명령어를 수행했을 때 확인된 최신 버전이겠지?



강제로 예외를 발생시켜야 하는 상황이 있다... 는 걸 그동안은 경험해 볼 일이 없다가

회사에서 뭔가를 만들다가 경험하게 되었다.

회사 조직도를 참고해서 부서의 상하 관계를 파악해야 할 일이 있어서 이걸 코딩으로 해결하는 과정에서 공부한 것.

raise 라는 키워드(?)를 사용해서 Exception 을 일으키면 된다. 



예제



마침 디자인 패턴에 대해 설렁설렁 공부하던 때라 Composite pattern을 이용해서 부서 상하관계를 파악하기로 했었다.

참고사이트(http://iilii.egloos.com/3838064)를 보며 구현했는데, Tree의 Leaf node에 child를 추가하려고 하면 에러가 발생해야한다는 걸 보고 이럴 때 예외를 강제로 발생시킬 수 있구나 했다.

실제로 문제를 해결할 땐 Leaf 클래스를 사용할 일이 없긴 했지만 예외를 강제로 발생시켜야 하는 상황의 필요성에 대해 조금이나마 알게 되었으니 포스팅을 남긴다.

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

[Python] list 자료형에서 한글 출력  (0) 2016.08.06
[Flask] 리눅스 우분투 Flask 설치  (0) 2016.07.06

Description:

Return the number (count) of vowels in the given string.

We will consider a, e, i, o, and u as vowels for this Kata.



My Solution:



javascript를 공부해보려고 한다. 입문서를 사서 읽어봐야하는데 이번 달엔 돈이 없당....힝.. 

일단은 문제를 조금씩 풀어봐야지.




배운점:

1. Sting.match(arg) 메소드. String에서 arg와 일치하는 문자열을 리턴. arg에는  Regular Expression(Regex, 정규표현식) 사용 가능.

2. /<조건>/g : Regex에 g를 붙이면 조건에 일치하는 모든 결과를 출력해준다.

3. javascript에서 Regex 표현 방법

    var i = /a/

    var i = new RegExp('a')



참고:

https://opentutorials.org/course/743/6580  생활코딩 - javascript - 정규표현식

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