[완독]

1. 흐르는 강물처럼 (파울로 코엘료)

2. 붉은 손가락 (히가시노 게이고)

3. 채식주의자 (한강)

4. 그래도 괜찮은 하루 (구작가)

5. 자기 앞의 생 (에밀 아자르)

6. 28 (정유정)

7. 종의 기원 (정유정)

8, 화씨 451 (레이 브래드버리)

9. 매스커레이드 호텔 (히가시노 게이고)

10. 예수와 함께 한 저녁식사 1, 2 (데이비드 그레고리)

11. 붉은 소파 (조영주)

12. 공허한 십자가 (히가시노 게이고)

13. 흉가 (미쓰다 신조)

14. 폴리글랏 프로그래밍 (임백준)

15. 차이를 만드는 습관 (허일무)

16. 뉴욕의 프로그래머 (임백준)

17. 살인자의 기억법 (김영하)

18. 열정을 말하라 (김병완)

19. 꿈꾸는 자는 멈추지 않는다 (전성철)

20. 어떤 능력이 당신을 최고로 만드는가 (미쓰자와 마키)

21. 독서 천재가 된 홍대리 1 (이지성)

22. 독서 천재가 된 홍대리 2 (이지성)

23. 탈무드 (샤이니아)

24. 여름, 어디선가 시체가 (박연선)

25. 나의 끝, 예수의 시작 (카일 아이들먼)

26. 두려움이 속삭일 때 (피트 윌슨)

27. 핑거스미스 (세라 워터스)

28. 죽음이란 무엇인가 (셸리 케이건)



[미완독]

딸에게 보내는 굿나잇 키스 (이어령)

고백록 (아우구스티누스)

너도 떠나보면 나를 알게 될 거야 (김동영)

참을 수 없는 존재의 가벼움 (밀란 쿤데라)

어떻게 인생을 살 것인가 (쑤린)

안나 카레니나 (톨스토이)

갈라디아서 (화종부)

모든 사람을 위한 누가복음 (톰라이트)

클라우스 슈밥의 제 4차 산업혁명 (클라우스 슈밥)

유지보수 어렵게 코딩하는 방법 (로에디 그린)

미래를 바꾼 아홉가지 알고리즘 (존 맥코믹)

삼국지 (나관중 저, 황석영 역)

고수의 생각법 (조훈현)

라면을 끓이며 (김훈)




- 07.04

 미완독 책이 왜 저렇게 많을까. 원래 한 번 손에 잡은 책은 끝까지 읽어야 직성이 풀리는 성격이었는데 요즘 집중력이 부쩍 안 좋아진 건지 아니면 내 취향이 아니어서 계속 읽기 어려웠던 건지 모르겠다. 그래도 일단 손 댄 책은 (구입한 책이라면 더더욱!) 어쨌든 끝까지는 읽어보도록 하자! (전자책 단말기를 사고 난 이후 부쩍 책을 더 사재끼고 있다.... )


- 08.09

 미완독 책 목록을 굳이 쓰는 이유? 어쨌든 시작한 책이므로 끝을 보자는 의미에서.

(사실 더 있지만 끝까지 읽고 싶지 않아서 중간에 접은 책은 제외했음)



'기타' 카테고리의 다른 글

읽고 싶은 책  (0) 2016.07.11
White Noise(백색 소음)를 들을 수 있는 사이트  (0) 2016.07.06

ㅎㅎㅎㅎㅎㅎㅎㅎ식겁헀다ㅎㅎㅎㅎㅎㅎ


우분투를 16.04로 업그레이드 하고 블로그를 참고해가며 한글입력기를 ibus에서 우분투 기본 값인 fcitx로 변경했다.

신나게 한영 전환키도 한/영 키로 바꾸고 나서 이제 ibus는 필요없겠구나~ 하고 아래 명령어로 ibus를 삭제했다.


※ 주의! 함부로 따라하지 마세요......

sudo apt-get remove --purge ibus

삭제하는데 생각보다 오래 걸리고 너무 많은 것이 삭제되는 것 같아서 좀 느낌이 이상했지만 뭐 넘어갔다.

그리고 나서 시스템 설정 메뉴를 눌렀는데 안 되더라구?^^ 이상해서 로그아웃하고 재로그인했다. 


그랬더니 내 눈에 보이는 화면은



?????????????? 

메뉴바며 런처며 다 사라져 있었다. 놀라서 황급히 검색해보니 

ibus에 걸려있는 많은 dependency들 때문에 ibus는 함부로 삭제하면 안 된다는 글들이 있었다.....^^ 우분투알못 인증...



이 사태를 해결하기 위해 일단 마음을 진정시키고 열심히 구글링해서 이것저것 시도해보았다.



1차 시도 (구글링 결과 이것저것 짜깁기)

1) sudo apt-get install ubuntu-desktop 

                                     unity-control-center 

                                     unity-control-center-signon

                                     gnome-control-center-unity

2) shutdown -r now

해결 안 됨.



2차 시도 (http://askubuntu.com/questions/475296/unity-launcher-and-top-panel-disappeared-in-14-04)

1) sudo service lightdm restart

2) sudo apt-get install --reinstall ubuntu-desktop

3) sudo apt-get install unity

해결 안 됨.



3차 시도 (http://askubuntu.com/questions/17381/unity-doesnt-load-no-launcher-no-dash-appears/76951#76951)

이번엔 왠지 될 것 같다는 촉이 왔음.

1) ctrl + alt + F1

2) sudo apt-get install compizconfig-settings-manager

3) DISPLAY=:0 ccsm &

4) ctrl + alt + F7 (GUI 화면으로 돌아감)

5) 실행된 CompizConfig setting manager에서 Unity Plugin을 Enable

    (그리고 데스크톱 항목에 있는 나머지도 뭔진 모르지만 일단 다 Enable)

6) 그럼 OpenGL을 사용하겠냐는 창을 시작으로 뒤에 뭐가 계속 나오는데, 전부 사용하겠다고 체크

7) sudo reboot



안 됨ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ망연자실 했다.

하지만 왠지 저 CompizConfig setting manager를 이용하면 해결될 것 같았다.

그래서  GUI 상에서 터미널을 실행해서 (마우스 우클릭 - 터미널 실행) ccsm을 실행



그랬더니! 아까는  Ubuntu Unity Plugin(캡쳐화면 오른쪽 하단) 앞에 체크박스가 있었는데 이번엔 없어져있었다. 

그래서 Ubuntu Unity Plugin을 클릭. 



그리고 왼쪽에 Ubuntu Unity Plugin을 사용을 체크. 그랬더니 무슨 창이 떴는데

잘 기억은 안 나지만 다른 거 무시하고 Unity Plugin을 사용하겠다는 내용을 클릭했던 것 같다.


결과는

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 감격

밀고 다시 깔아야 싶어서 심장이 철렁했었는데 친절하게 3번 해결 방법을 올려주신 어떤 분 덕분에 해결되었다.ㅠㅠㅠㅠ


내 생각엔 앞에서 시도했던 1번과 2번도 문제 해결에 도움이 된 것 같다. 

모르겠어 사실..... 그냥 해결돼서 좋아...



아 으아ㅏ아아아아 글 다 썼는데 날아갔어....귀찮아ㅠㅠ

 

Description:

[ id, email ] 형식의 element를 갖는 리스트에서 id의 마지막 캐릭터가 '_' 인 element의 리스트를 리턴하는 문제.

입력 값과 리턴 값의 형식은 아래와 같다.

input   :  [ [ "foo", "foo@foo.com" ], [ "bar_", "bar@bar.com" ] ]

output :  [ [ "bar_", "bar@bar.com" ] ]

 

 

 

My Solution:

어떻게 해서든 lambda를 사용해서 풀고 싶었다.

처음에는 function을 선언해서 문제를 해결한 후에 그걸 lambda 형식으로 변경함.

아래는 처음에 짰던 코드.

 

 

 

 

Solution by Others:

slice(-1) 을 하면 훨씬 간결하구나. 어레이의 인덱스에 음수값을 사용하는 것이 아직 익숙하지 않다.

그리고 난 true, false를 리턴하는 문장을 직접 작성했는데 여기서는 비교연산의 결과를 바로 리턴한다.

난 왜 매번 이 생각을 못하지? 다음번에는 꼭 기억해야지.

 

 

 

배운점:

* slice() 메소드

* true / false 를 리턴할 일이 있으면 비교 연산의 결과를 바로 리턴할 수 있는지 생각해보기

Description:

리스트에서 가장 큰 수와 그 다음으로 큰 수의 합을 구하는 문제.

리스트에는 적어도 2개 이상의 element가 있고 각 element는 모두 숫자이다.

 

 

 

My Solution:

지난번에 spread operator 배웠으니까 그거 한 번 써봤음 ^^*

 

 

 

Solution by Others:

이 방법처럼 sorting 한 후에 인덱스 순서대로 리턴하는 방법도 생각했다.

근데 numbers.sort() 하면 음수의 경우 절대값 크기 순서로 정렬되더라구?

제대로 정렬할 수 있도록 하는 방법을 몰라서 이 방법은 포기함. (사실 방법 검색하기 귀찮아서)

 

 

 

Solution by Others:

Spark 를 개미 눈꼽만큼 배우면서 Scala도 개미 눈꼽만큼 배웠는데 그 때 lambda를 조금 사용했었다.

개인적으로는 이 방법이 가장 깔끔한 코드인 것 같다.

 

 

 

배운 점:

* array.sort() 는 음수를 정렬할 땐 절대값 크기 순서대로 정렬된다는 것.

 →  이를 바로잡기 위해선 자바에서 comparator 넘겨주듯이 compareFunction을 넘겨줘야 함.

 

 

 

참고:

Description:

리스트의 원소의 총 합을 구하는 문제. 리스트에 원소가 없으면 0을 리턴.




My Solution:

요즘  어쩌다가 Hadoop과 Spark에 대해 맛보기 정도로 배우고 있는데 

하둡에서의 MapReduce에 대해 개미 눈꼽만큼 배워본 기념으로 reduce 함수를 써보았다ㅋㅋㅋㅋㅋ

이때까지만 해도 난 뿌듯했어... 아래에 있는 다른 사람들의 문제 풀이를 보기 전까진...




Solution by Others:

보자마자 육성으로 헛웃음 나옴ㅋㅋㅋㅋㅋㅋㅋㅋ역시 필요한 기능은 이미 다 구현되어 있어....

나름 reduce라는 고난이도(?) 기술을 써서 코딩해서 뿌듯해하고 있었는데 

이건 뭐 더하기 빼기 하려고 공학용 계산기 산 기분?




Solution by Others:

이 생각도 안 한 건 아닌데 초기값을 주면 리스트에 원소가 하나도 없는 경우에도 적용되는 줄은 몰랐다.

뭐... 이제 알았으니 됐지 ^^*




배운 점:

* reduce 함수에 초기값 지정해주면 리스트에 값이 없어도 적용된다는 것

* 내가 필요로 하는 웬만한 기능은 이미 파이썬에 다 구현되어 있으니 믿을 지어다


Description:

주어진 리스트에서 가장 작은 숫자를 제거한 리스트를 리턴하는 문제. 단 리스트의 원소의 순서는 변경되어서는 안 되며 최소값을 가진 원소가 여러개일 경우엔 가장 먼저 나온 원소를 제거한다.



My Solution:

설명할 것이 없다. 그냥 그대로 풀었음.

자바스크립트는 언어를 공부하지 않고 그냥 심심풀이겸 문제만 풀고 있기 때문에 허접해도 괜...찮.... >.<

공부해야지 해야지 말만 하고 손 놓고 있다.




Solution by pwynn:

?????? 당황....ㅎ....

어레이 앞에 "..." 은 어떤 용도로 쓰이는 거지? 검색해보니 'spread operator' 라고 한다. 

함수에 여러개의 인자를 전달하거나 배열에 여러개의 element를 전달(?)하려고 할 때 확장(?)해서 쓸 수 있다고 한다.


내가 이해한 바를 통해 예를 들자면, 

3개의 argument를 필요로 하는 함수 func(arg1, arg2, arg3) 가 있고 이 함수에 

arr=[1,2,3] 의 원소를 하나씩 argument로 전달하고 싶을 때 

func(arr[0], arr[1], arr[2]) 이렇게 쓸 수도 있지만 func(...arr) 이렇게 쓸 수도 있다는 뜻인 것 같다.

또한 arr의 원소를 포함하는 어떤 임의의 어레이를 선언하고자 할 때 

temp=[arr[0], arr[1], arr[2], 4, 5, 6] 이렇게 쓸 수도 있지만 temp=[...arr, 4, 5, 6] 이렇게도 쓸 수 있다는 뭐 그런 거 아닐까? 파이썬의 extend 메소드가 생각난다.





Solution by crazyYuyang:

apply 함수가 뭔지 모르겠어서 검색해보았다.

어떻게 쓰는 지는 대충 알겠는데 어디에 쓰이는 거지? 이건 나중에 쓰임새를 검색해봐야지. (귀찮아 헿....)





배운점:

* spread operator

* apply, call 함수 (이건 배웠다기 보단 이런게 있구나!? 를 알았다)



참고:


Description:

주어진 스트링에서 3자리 이하의 자리수를 가진 숫자를 추출(?) 해서 그 숫자가 cubic number인지를 판별한다. 

입력 값이 "123ab##45 0123456" 라면 여기서 추출가능한 숫자는 123, 45, 012, 345, 6이다.

※ cubic number = 어떤 숫자 A의 각 자릿수를 3제곱한 값을 모두 더한 값이 A와 같으면 cubic number라 한다.

예시: 아래의 153은 cubic number이다.

153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153


return 값은, cubic number가 하나라도 있을 경우 모든 cubic number를 나열한 뒤 각 cubic number들의 총 합과 "Lucky"를 출력하고, cubic number가 없을 경우엔 "Unlucky"를 리턴한다.

예시: 0, 1, 153은 cubic number이고 154는 cubic number들의 총 합이다.

0 1 153 154 Lucky





My Solution:

Regular expression 사랑합니다.

참고: http://stackoverflow.com/questions/26825729/extract-number-from-string-python





Solution by "lechevalier"

논리는 같은 것 같은데 훨씬 간결하다. 

특히 cubic_numbers 를 구하는 라인에서 감동받음... 난 언제쯤 렙업하지?ㅠㅠ






배운점:

* d{1,3} : Regular Expression에서 1자리수 ~ 3자리수를 뜻하는 표현

* sum() 함수 안에서  argument로 for loop 사용!




근데... 내 블로그 글은 왜 이렇게 난잡하지? 깔끔하지가 않다ㅜㅜ 어려서부터 미술 관련 과목 및 과제는 정말 못했었는데 여기서도 티가 나나봐 ㅜㅜ

Task:

전체 경로에서 현재 경로와 다음 경로가 서로 정반대이면 경로에서 현재와 다음 경로를 제거해나가는 문제.

예를 들어 전체 경로에서 현재 경로가 NORTH인데 다음 경로가 SOUTH이면 현재 경로인 NORTH와 다음 경로인 SOUTH를 전체 경로에서 제외한다. 이 과정을 계속해서 수행해서 인접한 경로가 서로 정반대의 경로가 아닌 것만 남도록 하는 문제. (난 분명 한국말을 하고 있는데....무슨 말이지)

경로는 NORTH, SOUTH, EAST, WEST 네 가지가 있다.

아래는 예시. 왼쪽이 전체 경로, 오른쪽이 경로 수정 과정을 거친 최종 경로.


['EAST','NORTH', 'NORTH', 'SOUTH', 'SOUTH','WEST','WEST] → ['WEST']


즉... 괄호 문제인거지. EAST, WEST를 각각 [ , ] 에 대응시키고 NORTH, SOUTH를 ( , ) 에 대응시킨다고 하면


[ ( ( ) ) ] ] → ]


이렇게 되는 셈.  짝이 맞는 괄호들을 제거하는 문제.



My Solution:

아쉬운 점이 있다면, dictionary를 함수 안에 선언한 것. 함수를 콜 할때마다 생성되잖아!! 밖에다 선언할 걸. 

그리고 다른 분의 풀이를 보고 깨달은 건데 if len(stack) == 0 이렇게 말고

if stack and stack[len(stack)-1] == opposite[i] 이렇게 짰으면 if 문을 덜 중첩시킬 수 있었겠구나.



배운 점:

list에 원소가 아무것도 없으면 boolean으로 false 값이라는 것.


+ Recent posts