반응형

파이썬 언어를 손, 발처럼 쓰고 싶으신가요?

그렇다면 연습, 연습 그리고 또 연습밖에 방법이 없지 않을까 싶습니다.

훌륭한 가르침을 받아도 스스로가 연습하지 않고 숙달시키지 않으면 아무 소용이 없습니다.

 

프로그래밍 연습 방법 중 하나가 알고리즘 문제 풀이입니다.

연습의 방법 중 좋은 방법이 알고리즘 문제 풀이입니다. 알고리즘 문제풀이는 프로그래밍 사고를 키워주고 문제풀이를 위해서 선택하신 언어의 숙달과 스킬을 향상해줄 겁니다.

 

알고리즘을 공부하는 법은 이렇습니다.

  • 문제를 이해합니다.
  • 직접 풀어 봅니다.
  • 다른 이들의 코드를 보고 직접 풀어본 코드와 비교합니다.

알고리즘 문제풀이를 하는 유료 강의도 많습니다. 하지만 알고리즘 문제는 직접 풀어보고 고민을 하셔야 됩니다. 알고리즘 문제풀이를 통해서 패스 또는 논 패스가 필요한 것이 아닌 우리는 언어의 숙달과 프로그래밍 사고가 필요한 것입니다.

스스로가 고민하고 고민하고 또 고민하고 직접 타이핑을 해가면서 문제를 해결하는 것이죠.

 

하루, 이틀 한다고 되는 게 아닙니다. 꾸준한 연습이 필요합니다. 그렇기에 마음의 여유를 갖고 오늘부터 연습을 시작하도록 하겠습니다 :)

 

프로그래밍을 처음 시작하는데, 알고리즘을 처음 시작하는데 처음부터 손도 못될 문제들을 만나면 곤란하겠죠.

그래서 추천드리는 사이트는 바로 leetcode입니다.

https://leetcode.com/problemset/all/

 

leetcode는 알고리즘 문제를 제공하는 사이트입니다. 세계적으로 유명한 알고리즘 사이트 중 하나인데 난이도 별로도 정렬을 할 수 있습니다. 문제를 한 문제 한 문제 풀다 보면 우리는 세계 기업들이 특정 수준을 요구하는 프로그래밍 사고도 충족시킬 수 있습니다. 또한 leetcode는 python뿐만 아니라 자바스크립트, 자바, c, c++ 등 무수한 많은 언어로 알고리즘 문제를 풀 수 있도록 지원합니다.

 

이렇게나 큰 이점을 갖고 있는 알고리즘 문제를 순번 별로 문제들을 풀어보도록 하겠습니다.

그렇게 풀어 본 문제가 1.Two Sum 문제입니다.

 

문제를 보고 로컬에서 풀어 봅니다.

한 문제를 풀 때 너무 오랜 시간 동안 고민하지 마세요. 1시간, 2시간 스스로가 정한 시간 동안 고민을 하고 문제를 풀어보세요. 로컬에서 돌려보고 됐다 싶으면 leetcode에서 돌리면 내가 작성한 알고리즘에 대해서 판단을 해줍니다.

 

올바른 답은 없습니다.

단지 더 나은 방법이 있을 뿐입니다. 더 나은 방법이 있으면 배우고 익혀서 사용하시면 됩니다.

하지만 그전에 분명히 자신의 생각이 있어야 되고 직접 문제를 풀어 보셔야 더 많은 걸 배우실 수 있습니다.

그래야 내가 생각한 방법과 더 나은 방법을 비교를 해봐야 성장할 수 있기 때문입니다.

(더 나은 방법을 배우셨다면 스스로 복기를 다시 해보세요)

 

from typing import List

class Solution:
	def twoSum(self, nums: List[int], target: int) -> List[int]:
		idx = 0

		for i in nums:
			find_data = target - i
			idx += 1

			if find_data in nums[idx:]:
				return [idx-1, nums[idx:].index(find_data)+idx]

		if __name__ == '__main__':
			print(Solution().twoSum([2, 7, 11, 15], 9))

위의 문제는 로컬에서 풀면서 작성한 코드입니다.

1문제를 풀면서도 for문, if 문을 사용하고 리스트의 index를 이런 방식으로 찾을 수 있구나 배웁니다.

또한 프로그래밍 사고를 배우게 되는 것이죠.

 

한 문제, 한 문제 문제풀이가 누적이 된다면 분명 엄청난 파워를 갖게 되리라 믿습니다.

오늘부터 알고리즘 문제풀이를 시작해보세요 :)

감사합니다.

반응형

+ Recent posts