반응형

알고리즘 28

[알고리즘 첫걸음] 파이썬 문법부터 알고리즘으로 넘어가는 기본서

이 책은 카페에서 우연히 댓글을 남기고 당첨되어서 읽게 된 책이다. (감사합니다.) 제목을 잘 살펴보면 '알고리즘 첫걸음'이다. 즉, 기본적인 개념을 쌓을 수 있으리라 추측되는데 본문을 읽고 나니 왜 첫걸음인지 알게 되었다. 흔히 그런 말이 있다. '첫 단추를 잘 꿰어야 한다' 이 책은 파이썬 문법 기본을 공부한 후에 파이썬으로 알고리즘을 도전하기 전에 보면 가장 적합한 책이라고 생각된다. 바로 그 점에서 '첫걸음'이라는 제목이 적합한 것이다. 사실 알고리즘을 풀 때는 C++이 가장 널리 사용되는데 실제로 알고리즘풀이 사이트를 확인해 보면 파이썬이 굉장히 많이 쓰이는 것을 알 수 있다. 최근에 들어서 파이썬이 AI및 통계분석으로 각광을 받으며 사용자가 늘어난 것 뿐 아니라 알고리즘에도 파이썬이 적합한 언..

독서/서평 2022.05.20

[프로그래밍 콘테스트 챌린징] 일명 노란책

일명 노란책으로 알려진 책이다. 표면이 딱 노란색이니까 알기 쉽다. 이 책은 아쉽게도 지금은 절판이라 구하기 쉽지 않다. 도서관에서 빌려보는 수밖에... 이 책은 장단점을 고루 가진 책이다. 장점은 포함하는 범위가 굉장히 광범위하다는 것이다. 종만북 2권을 본 정도의 범위를 포함한다. 근데 한 권이다. 이게 또 단점이 된다. 한 권이기 때문에 압축 정도가 굉장하다. 이 책은 C++로 코드가 되어 있어서, 나는 해당 코드를 이해하고 다시 Python으로 구현했었다. (내가 알고리즘을 푸는데 사용하는 언어는 Python이다.) 그 과정에서 C++만의 간결함, 포인터를 쓰는 이유 등을 깨달을 수 있었다. 그리고 이런 책들은 으레 '더 알아보면 좋은 것들' 같은 내용들이 들어있어서 공부한 뒤에 추가로 찾아볼만한..

독서/서평 2022.05.19

[BOJ][10815번] - 숫자카드 (python)

안녕하세요 Dibrary 입니다. 이번에는 사전형을 써야만 풀리는 문제를 정리해보고자 합니다. 먼저 제가 몇 번을 틀린 방식은 아래와 같습니다. 문제에서 주어진 500000이라는 횟수의 비교를 너무 가벼이 생각했음. list가지고 해결이 안 되길래, set을 이용했음. 그럼에도 안 됨. 우선 500000이라는 횟수는 생각보다 간단하네~ 라고 착각했던게 큰 오판이었습니다. 차례대로 비교를 해 나가야 하는 것이므로, 500000*500000 의 경우의 수가 있죠... ... 그래서 리스트로 접근했던 아래 코드는 시작도 못해보고 시간초과에 걸렸습니다. sys.stdin.readline 을 이용해서 입력을 받았음에도 말이죠. 그래서 set으로 담으면 괜찮을까? 싶어서 set으로 시도를 해보았는데, 역시나 시간초..

[leetcode][821] - Shortest Distance to a Character

안녕하세요 Dibrary입니다. 이번에는 leetcode의 821번 문제를 정리하겠습니다. c로 주어진 문자를 기준으로 좌우 거리마다 1씩 증가하되, c문자를 또 만나면 좌우가 대칭으로 숫자가 들어가야 합니다. 제일 먼저 든 생각은 이랬습니다. c로 입력된 문자를 뽑아내어서 index를 찾는다. 그 index 주위로 +-를 계산한다. 이렇게 하면 맨 앞부분, 맨 뒷부분은 해결이 되는데, 좌 우가 같은 경우는 도저히 해결이 안 되는 겁니다. 예를 들면, 아래 처럼 한 후에, index에 해당되는 값부터 다음 index까지를 - 해 나갈 생각이었죠, 근데 그러려면 5는 -4를 해야 하고, 4는 -2를 해야하고, 3은 -1을 해야하니까, 규칙성이 없네요? 이래서 이 문제를 풀려고 온갖 방법을 헤메고 다녔답니다..

알고리즘 책 리스트 - 빨간책, 노란책 그리고 종만북

안녕하세요 Dibrary입니다. 알고리즘을 공부하려면 쉬운 기본 개념부터 공부하고, 점진적으로 그 수준을 높여 나가야 합니다. 알고리즘 관련 책은 다행이도 한국에 몇 권 있습니다. 특히나 개발자들 사이에서 통용되는 'OO책' 이런 이름들을 달고있습니다. 널리 알려진 책 중, 제가 직접 읽어본 책만 주관적인 평가를 해 보겠습니다. 비전공자가 공부하고 느낀 점인 셈이죠. 1. 종만북 종만북이라는 이름으로 정말 널리 알려진 책 입니다. 2권으로 구성되어 있으며, 대부분의 풀이에 정당성 해설도 꼭 들어 있습니다. 왜 종만북이냐구요? 저자가 구종만 입니다. ㅎㅎ 책 이름이 너무 길어서 종만북 종만북 하는 것이죠. 저는 이 책을 읽으면서 굉장히 어렵다는 생각이 제일 먼저 들었습니다. 물론, 전부 다 어려운게 아니라..

알고리즘 2022.03.20

[쓰면서 익히는 알고리즘과 자료구조] 나만의 알고리즘 디비 만들기

개발자라면 뗄레야 뗄 수 없는게 '자료구조'와 '알고리즘'이다. 그 중에 이 책은 제목 중 '알고리즘'에 강점이 있는 책이다. 알고리즘은 말 그대로 '문제를 푸는 방법'이다. 초,중,고등학교를 기본교육으로 들은 사람이라면 '수학' 과목을 잊을 수 없을텐데 수학 문제를 푸는 것과 같은 이치인 셈이다. 반드시 생각을 해봐야 하고, 단순히 배운 개념만 가지고는 문제를 푸는데 써먹을 수 없었던 기억이 있을 것이다. 알고리즘도 몇몇 형식화된 그리고 유명한 것들이 존재한다. 문제는 그것들을 아주 완벽히 암기를 했다 하더라도? 실제 주어진 문제에 해당 알고리즘을 사용해야 하는지 아닌지를 판별할 수 없다. 그럼 이 책은 그 방법을 알려주는가? 그것도 아니다. 그러나, 이 책의 강점은 내 생각을 정리할 수 있는 하나의 ..

독서/서평 2022.02.21

알고리즘을 풀 때 항상 생각해봐야 하는 것 - 복잡도

안녕하세요 Dibrary입니다. 개발자라면 항상 습관적으로 알고리즘을 풀곤 하죠. 주로 파이썬이 '생각'을 구현하는데 편해서 많이들 사용하는데 생각보다 파이썬은 느린 언어죠. 따라서 알고리즘문제를 풀 때 반드시 조심해야 하는 것 2가지가 있습니다. 1. 시간복잡도 네 시간복잡도는 말 그대로 코드로 해답을 구하는데 '시간'이 얼마나 걸리느냐 입니다. 백준 알고리즘을 예로 들어보겠습니다. 이렇게 입력값의 범위가 주어지면 숫자가 얼마나 큰지 감이 오시나요? 아주 어마어마하죠. 문제는, 이렇게 큰 범위 값이 항상 주어지는 것은 아니지만, 전부가 주어질 수도 있다는 겁니다. 그렇기에 파이썬으로 해당 문제를 풀기 전에 시간을 먼저 구해보는 습관을 들이면 좋습니다. 위 코드는 임의로 제가 10의 100제곱만큼의 범위..

[이것이 코딩테스트다] 알고리즘 풀이 초보를 위한 가교

개발자라면 누구나 알고리즘과 친숙할거라는 일반적인 고정관념과는 다르게, 잘 할 수도 못 할 수도 있다. 특히나, 요즘은 산업지형이 바뀌어 가면서 개발을 직업으로 삼는 사람들이 늘어나고 있어서 더 그런 생각이 보편화 되는 경향이 있다. 안타깝게도 나는 그렇지 못한 사람 중 하나였다. 특히나 내가 하던 코딩이 정말 '무에서 유'를 만들어 내는 코딩인지 의문을 정말 많이 했다. 코드를 만들때 생각을 하고, 코드가 곧 내 생각을 반영할 뿐 아니라 코드라는 도구의 효율을 최고로 끌어내는가에 대한 의문을 많이 가지곤 했었다. 그 이후 부터 알고리즘을 풀어나가기 시작했다. 비전공자라서 더 부족함을 깨닫고 자료구조, 알고리즘, 컴퓨터과학, 클린코드, 객체지향 등 닥치는대로 공부해 나갔다. 하지만 알고리즘은 정말 어려웠..

독서/서평 2022.01.13
반응형