목록Programmers(Python) (21)
ol-rlo-zl

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 1. skill(선행스킬순서)에 있는 원소들에 대하여 skill_tree(스킬트리)에서의 index를, 리스트에 담는다. 2. 1번에서 만약, skill에 있는 원소가 skill_tree에 없다면, 임의로 스킬트리의 길이를 리스트에 담는다. (index의 범위가 0부터 스킬트리의 길이-1 까지 이기 때문에 이들 보다 큰 수를 넣기 위함) 3. 리스트가 오름차순 정렬 되어있다면, 가능한 스킬트리 라고 판단한다. 4. 모든 skill_tree에 대하여 1,2,3번 과정을 반복한다. def solu..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 시행착오 (list 이용) 66.7점 - 정확성 테스트 통과, 효율성 테스트 실패(시간초과) def solution(prices): result = [] while prices: now = prices.pop(0) # i = 0 for p in prices: i += 1 if now > p: break result.append(i) return result 정답 (deque 이용) list를 이용할 때와 같은 풀이방식이지만, deque를 이용하면 더 효율적이다. from collections import..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(record): result = [] user = {} ment = {'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'} for r in record: r = r.split() if r[0] in ('Enter','Change'): user[r[1]] = r[2] for r in record: r = r.split() if r[0] in ment: result.append(user[r[1]] + ment[r[0]]) return result 결과

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(fees, records): lst = [] dic = {} result = [] def time(in_time, out_time): in_h, in_m = map(int,in_time.split(':')) out_h, out_m = map(int,out_time.split(':')) if in_m > out_m: out_h -= 1 out_m += 60 return (out_m-in_m) + 60*(out_h-in_h) for r in records: if r[-2:] ==..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(n, t, m, p): res = '0' i = 1 while len(res) 0: if _i % n > 9: temp += chr(55 + _i % n) else: temp += str(_i % n) _i //= n res += temp[::-1] i += 1 return res[:t*m][p-1::m] 결과

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(n, k): result = 0 # n의 k진수 num[::-1] 구하기 num = '' while n > 0: num += str(n % k) n //= k for p in num[::-1].split('0'): if p.isdigit() and int(p) > 1 : # 빈 문자열과 1은 제외 # p가 소수인지 판별 for i in range(2,int(int(p)**(1/2))+1): if int(p) % i == 0: break else: result += 1 retu..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. Hash 이용 def solution(phoneBook): hash_map = {} for number in phoneBook: hash_map[number] = 1 for number in phoneBook: temp = '' for n in number: temp += n if temp in hash_map and temp != number: return False return True 2. zip함수와 startswith함수 이용 def solution(phoneBook): phoneBo..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. 재귀함수 이용 def recursive(numbers, target, summ): if numbers == []: if summ == target: return 1 else: return 0 return recursive(numbers[1:], target, summ + numbers[0]) + recursive(numbers[1:], target, summ - numbers[0]) def solution(numbers, target): return recursive(numbers, targe..
1. 기본 성질 이용 # 최대공약수 def gcd(a, b): for i in range(min(a,b), 0, -1): if a % i == 0 and b % i == 0: return i # 최소공배수 def lcm(a, b): for j in range(max(a,b), a*b+1): if j % a == 0 and j % b == 0: return j 2. math 라이브러리 이용 # 최대공약수 : math.gcd() import math def gcd(a, b): return math.gcd(a, b) # 최소공배수 : 두 수의 곱 / 최대공약수 import math def lcm(a, b): return a * b / math.gcd(a, b) # 최소공배수 : math.lcm은 3.9 이상 ..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식 0) 위치값 #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 1) 열(column) ➡️ 위치값 % n + 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 2) 행(row) ➡️ 위치값 // n + 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 3) 열과 행 중 더 큰 값 ➡️ max( 위치값 % n , 위치값 // n ) + 1 1 2 3 4 2 2 3 4 3 3 3 4 4 4 4 4 🔶a행 b열의 값은 max(a,b..