전체 글

개발..해볼까?
코딩테스트 대비/Python 문법

[Python] enumerate 사용법

enumerate 의미 말 그대로 enumerate의 뜻은 낱낱이 센다는 의미이다. enumerate (iterable, startIndex) 그래서 iterable한 매개변수를 사용한다. 그리고 startindex는 별도로 지정하지 않으면 0부터 카운트를 한다. 예시 (0, item_1) (1, item_2) (2, item_3) … (n, item_n) 딱 봐도 코딩을 하면서 유용하게 활용될 것처럼 생겼다. for idx, item in range( ): 이렇게 돌리는 경우를 많이 볼 수 있었다. tuple 안에서 돌려도 아주 유용! 단어 가져다놓고, 문자열 하나하나 쪼개고 싶을 때 이걸로 돌릴 수도 있다.

코딩테스트 대비/프로그래머스

[Python][프로그래머스] lv3. 단어 변환

https://school.programmers.co.kr/learn/courses/30/lessons/43163?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 from collections import deque def solution(begin, target, words): if target not in words: return 0 q = deque() q.append([begin, 0]) while q: tmp, cnt =q.popleft() if tmp ==target: #같으면 cnt 반환 return cn..

코딩테스트 대비/프로그래머스

[Python][프로그래머스] lv2. 타겟 넘버

https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 def solution(numbers, target): cnt =0 arr =[0] for i in numbers: tmp = [] for j in arr: tmp.append(j + i) tmp.append(j - i) arr = tmp for i in arr: if i == target: cnt+=1 return cnt BFS 풀이 트리 유형의 문제라고 ..

코딩테스트 대비/프로그래머스

[Python][프로그래머스] lv1. 같은 숫자는 싫어

https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 def solution(arr): answer = [] s = set() q = [arr[0]] j=0 for i in range(1, len(arr)): if q[j] == arr[i]: continue else: q.append(arr[i]) j+=1 return q 파이썬에서의 스택 기존에 코드를 c++로 썼어서, 당연히 스택은 stack 으로 구현하는 줄 알았다. 하지만 파이썬은 ..

코딩테스트 대비/프로그래머스

[Python][프로그래머스] lv2. 전화번호 목록

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book)-1): if len(phone_book[i]) < len(phone_book[i+1]): if phone_book[i+1][:len(phone_book[i])] ==phone_book[i]: answer = False return ..

코딩테스트 대비/프로그래머스

[Python][프로그래머스] lv2. 소수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 from itertools import permutations def solution(numbers): answer = 0 arr =[] s= set() cnt =0 chk = True for i in range(1, len(numbers)+1): tmp = list(map(''.join, permutations(numbers, i))) for j in tmp: s.add(int(j)) ..

코딩테스트 대비/코딩테스트 꿀팁

[Python] 프로그래머스 함수 내부에서 변수 사용팁(nonlocal, global)

함수 내부 변수 선언 함수를 새롭게 만들어서 count 를 해주려고 하면 오류가 생겨서 애먹은 적이 종종 있다. 특히 dfs같은 경우에는 함수 안에서 cnt를 선언하면 재귀로 인해 함수만 돌아가면 cnt= 0으로 초기화되는 마법같은 일이 일어날 수 있다. 그래서 cnt변수를 어떻게 사용해야 하는지 정리해보았다. 두 가지 케이스가 있다. 1. def solution 안에서 변수 선언 (nonlocal) def solution(a): cnt = 0 def dfs(x, y): nonlocal cnt return 이때처럼 nonlocal 을 사용하면 된다. (= '지역변수는 아닌 변수를 사용'할 거라고 말하는 것) 바깥에 있는 지역변수를 변경하려면 내부 함수에서 nonlocal 선언을 해줘야 한다. 2. def..

코딩테스트 대비/알고리즘

[Python] 소수 찾기 알고리즘(에라토스테네스의 체)

소수(Prime Number) 1과 자기 자신만을 약수로 가지는 수 ※그러므로 1은 소수가 아님 방법 1 - O(n) for i in range(2, n): if n % i ==0: return False return True 소수 = 1과 자기 자신만을 약수로 가진다. = 수를 나누었을 때 1과 자기 자신만으로만 나누어 떨어질 수 있다. → 이 알고리즘은 2부터 n-1 까지 연산하는 for문이 필요하다. 시간복잡도 = O(n) 방법 2 - O(2/n) for i in range(2, int(math.sqrt(n))+1): if n % i == 0: return False return True 굳이 약수를 2부터 n까지 나누지 않더라도 계산할 수 있는 방법이 있다. 예를 들어 12의 약수를 보면, 1 2..

bee22
beeee