본문 바로가기
반응형

전체 글338

[프로그래머스] 숫자 타자 대회 https://school.programmers.co.kr/learn/courses/30/lessons/136797 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해설 너무 어려웠던 문제 ㅠㅠ.. 처음에는 그리디로 풀다가 며칠을 헤메었다. 그리디는 보통 input을 0부터 끝까지 훑는데 하다보니 그리디로는 풀리지 않고, 답을 numbers인덱스의 가장 마지막부터 훑어야 한다는걸 알았다. 즉 dp를 써야된다는 것 파이썬에서 재귀를 돌리다 런타임에러가 난다면 setrecursionlimit을 항상 설정해주자! 아이디어는 다음과 같다. 인풋이 두손가락에 .. 2022. 12. 16.
파이썬 다차원 배열 복사 시 주의사항 다차원 배열의 얕은 복사 >>> a = [[1,2],[3,4]] >>> b = a[:] >>> a [[1, 2], [3, 4]] >>> b [[1, 2], [3, 4]] >>> a[1][1] = 9 >>> a [[1, 2], [3, 9]] >>> b [[1, 2], [3, 9]] 위 케이스처럼 배열을 복사하면 얕은 복사가 일어난다. 문제는 리스트안에 mutable한 변수(List와 Dict같은)이 있으면 주소값이 복사되어버린다! 그래서 코드 후반부 처럼 값을 변경하면 다른값도 전부 변경되어 버린다. a = b[:] a = b.copy() 전부 얕은복사이다. Mutable 데이터 타입 사용자 정의 객체 list dictionary set Immutable 데이터 타입 int float decimal boo.. 2022. 12. 15.
[프로그래머스] 억억단을 외우자 https://school.programmers.co.kr/learn/courses/30/lessons/138475 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 일단 억억단에서 등장하는 횟수는 약수의 개수와 같다. 고로 약수를 빠르게 얻는법을 알아야 한다. 약수를 얻은 다음에 (숫자,약수) 를 조건에 맞게 sort해준뒤 값을 구한다. 약수 빠르게 구하는법은 추후 정리. 10번문제가 채점 서버의 상태에따라 통과되기도 하고 안하기도 한다. 다른사람 풀이를 돌려봐도 마찬가지... divisor = [0] * 5000001 def solution(e, s.. 2022. 12. 13.
파이썬 약수 구하기 1. 설명 어떤수의 약수를 구하면 N=A*B 형태로 나타낼 수 있다. 하나의 약수, 예를들어 A를 구하면 B는 N/A로 구할 수 있다 A와 B가 값이 다르다면 2개를 세어주어야 하고, A와 B가 같다면 1개만 세어주어야 한다 작은숫자부터 약수 A를 구한뒤 A*A가 N(N은 A*B)보다 작다면, A와 B는 다른값이므로 2개를 세어준다. 여기서 B는 A보다 큰값을 가지게 된다. 만약 A를 구하고, A*A가 N이라면 A와 B는 같은 값이다. 이후 A보다 큰값에서 약수 계산은 이미 계산되어있으므로 불필요하다 이때 시간복잡도는 루트N이다 def divisor(x): i = 1 result = 0 while i*i 2022. 12. 13.
[프로그래머스] 디펜스 게임 https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 게임을 하다 죽었다고 치자. 죽었을 때 과거의 적들중 가장 값이 큰값에 k를 소모하면 더 오래 게임하지 않을까? 알고리즘 과정은 다음과 같다 while문을 돌리면서 게임을 한다 게임을 하다가 죽으면 이전 적들중 가장 큰 값에 k를 사용한다 => 이전적들은 heapq로 저장하면 가장 큰놈을 찾을 수 있다 내가 실수한점 k는 죽었을 때 한번만 써야 하는데, 죽었을 때 k를 while문으로 전부.. 2022. 12. 12.
ngrok 사용하여 https 적용하기 1. ngrok이란? 로컬에서 개발하고 있는 서버를 외부에 노출시켜주는 프로그램이다. 2. 어떨 때 유용하나? 로컬에서 개발하고 있는 서버를 다른사람에게 잠시 open하고 싶을때가 있다. 같은 와이파이망을 가지면 문제가 없지만 다른 와이파이망을 가지고 있을 경우, 내 서버를 포트포워딩 해 주거나 아니면 aws같은 플랫폼에 서버를 배포해서 전달해야 된다. 몹시 귀찮은 과정이지만 ngrok을 이용하면 편리하다 3. 사용법 이 링크를 타고 ngrok을 다운로드 한다. 그리고 아래와 같이 입력해준다 //ngrok (로컬서버 프로토콜) (로컬서버 포트번호) ngrok http 3000 2022. 12. 12.
[프로그래머스] 쌍둥이 빌딩 숲 https://school.programmers.co.kr/learn/courses/30/lessons/140105?language=python3# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 나머지 연산이 있는걸 보니 전형적인 dp 문제이다. (n,c) 를 (n-1,c-1) 과 (n-1,c)로 나누어 생각한다. 새로들어온 n이 두개가 다 가장 뒤로 배치된다고 하자. n은 어차피 가장 크므로 나머지 경우의수는 solution(n-1, c-1)이 될 것이다. 만약 n의 건물 사이에 아래처럼 다른건물이 들어오거나 앞서있다면? (n, n-1)의 이 한쌍.. 2022. 12. 10.
파이썬 Queue vs Deque 어느것을 사용할 까? Queue와 Deque 알고리즘을 풀 때 어느것을 사용해야 될 까 queue — A synchronized queue class — Python 3.7.14 documentation queue — A synchronized queue class Source code: Lib/queue.py The queue module implements multi-producer, multi-consumer queues. It is especially useful in threaded programming when information must be exchanged safely between multiple threads. The Queue docs.python.org 파이썬 공식문서의 Queue 모듈 내용을 보면 .. 2022. 12. 9.
파이썬 알고리즘 팁 및 필수 지식 1. input 빠르게 받기 import sys n, m = map(int, sys.readline().split()) 2. 문자 숫자 변환 chr 함수와 ord 함수를 이용한다 chr(65) # A ord('A') # 65 3. List Comprehension 응용 keys = [ key for key, value in dict ] values = [ value for key, value in dict ] keysValues = [ (key,value) for key, value in dict] map = [ [] for _ in range(n)] # 텅빈 2차원 배열 zeros = [0] * 10 >>> [ [i,i+1] for i in range(10)] [[0, 1], [1, 2], [2, 3].. 2022. 12. 8.
반응형