본문 바로가기

프로그래머스 파이썬16

[프로그래머스 lv1] 과일 장수 사용 언어 - Python3 문제 - 과일 장수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 시간초과없이 계산 간편화하기 (정답 맞춘 여부 O) if문으로 사과를 버리는 경우와 안버리는 경우를 따로 계산하니까, 시간초과가 떴다. 두가지 경우에서 각자 복잡한 식으로 최대이익을 계산하기 때문이다. # 시간초과 def solution(k, m, score): answer = 0 score.sort() # 사과 점수에 따라 정렬 if len(score)%int(m) == 0: # 나누어 떨어지면, 모든 사과 포장 for i in range(0,m+1): .. 2023. 4. 26.
[프로그래머스 lv1] 기사단원의 무기 사용 언어 - Python3 문제 - 기사단원의 무기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 약수 시간초과 없이 구하기 (정답 맞춘 여부 X) 약수를 구하는 과정에서 이중 for문으로 인해 시간초과가 뜬다. # 시간초과 def solution(number, limit, power): # number 안의 약수 개수 = 공격력 무기 num = [] for i in range(1,number+1): cnt = 0 for j in range(1,i+1): if i % j == 0: cnt += 1 num.append(cnt) for i in ran.. 2023. 4. 25.
[프로그래머스 lv1] 명예의 전당 사용 언어 - Python3 문제 - 명예의 전당 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 if문 활용하여 리스트원소 빼고 더해주기 (정답 맞춘 여부 X) 리스트.remove() def solution(k, score): answer = [] stack = [] #명예의 전당 리스트 for s in score: if len(stack) < k: # 상위 k번째 이내이면 명예의 전당 stack.append(s) else: if min(stack) < s: stack.remove(min(stack)) stack.append(s) answer.app.. 2023. 4. 25.
[프로그래머스 lv1] 문자열 나누기 사용 언어 - Python3 문제 - 문자열 나누기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 해당 값이 앞 값과 같은지, 아닌지 확인해 개수 더해주기 (정답 맞춘 여부 X) 큐로 구현하려다가 실패했다. ㅠㅠ x 문자 개수(cnt1)와 x가 아닌 문자 개수(cnt2)를 구하는 문제 현재의 i가 앞서 저장한 k(한 문자 앞)와 같다면 cnt1 += 1 두 문자가 다르다면 cnt2 += 1 1. b k = b b == b: cnt1 = 1 2. a b != a: cnt2 = 1 def solution(s): answer = 0 cnt1, cnt2 =.. 2023. 4. 25.
[프로그래머스 lv1] 가장 가까운 같은 글자 사용 언어 - Python3 문제 - 가장 가까운 같은 글자 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 리스트 거꾸로해서 index 찾기 (정답 맞춘 여부 O) list_a 라는 빈 리스트를 생성하여, list_a에 있다면 원소값을 찾아준다. 리스트 순서 거꾸로 [::-1] 해서 index 값을 찾으면 가장 가까운 같은 글자의 위치를 찾을 수 있다. 원소가 없다면 -1을 추가해준다. 한 글자를 처리한 후에 list_a에 append해준다. def solution(s): answer = [] list_a = [] for i in s: if i in.. 2023. 4. 25.
[프로그래머스 lv1] 둘만의 암호 사용 언어 - Python3 문제 - 둘만의 암호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 리스트 원소값 replace & index 찾기 (정답 맞춘 여부 X) 리스트명.replace(바꾸려는 값, 바꿀 값) 리스트명.index(인덱스 찾으려는 값) 전체리스트 개수를 len(alpha) 값으로 나눈 몫을 구하면, len(alpha)가 z 값을 넘어서도 a부터 다시 시작할 수 있다. 문자열을 더할 때는 + 로도 가능하다 def solution(s, skip, index): answer = '' alpha = 'abcdefghijklmnopqrs.. 2023. 4. 25.
[프로그래머스 lv 1] 카드 뭉치 사용 언어 - Python3 문제 - 카드 뭉치 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 큐를 활용 (정답 맞춘 여부 O) cards1과 cards2를 deque로 저장하여 맨 왼쪽 값과 값이 같을 경우, popleft()로 없애준다. 큐 값이 있을 경우에만 popleft()를 해줘야하기 때문에, if card1을 꼭 적어줘야한다 from collections import deque def solution(cards1, cards2, goal): card1 = deque(list(cards1)) card2 = deque(list(cards2)).. 2023. 4. 24.
[프로그래머스 lv1] 대충 만든 자판 사용 언어 - Python3 문제 - 대충 만든 자판 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 새 def 함수를 만들어 활용하기 (정답 맞춘 여부 X) 1. 인덱스 반환 함수 ,check(keylist,character) keylist에서 character의 인덱스를 찾아 값을 반환해주는 함수 1부터 시작하기 때문에 +1을 해준다. 2. 각 target의 글자들에 대해 character로 저장한후, 각 key 값에 포함되어 있는 지 확인한다. if character in set(keylist): cur = min(cur, check(keylis.. 2023. 4. 24.
[프로그래머스 lv1] 덧칠하기 사용 언어 - Python3 문제 - 덧칠하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 큐를 활용해서 리스트 안에서 인접한 두개의 값 비교하기 (정답 맞춘 여부 X) 1. deque(section) 2. 가장 왼쪽 값부터 없애주면서 start 3. start에서 m만큼 더한 값(페인트 롤러 범위) > section 리스트원소의 두번째 값(첫번째 값은 없어짐) section[0] 페인트 롤러 범위 안에 section 리스트 안 다른 원소도 포함되어 있다면 그 값도 없애준다. from collections import deque def soluti.. 2023. 4. 24.
[프로그래머스 lv1] 바탕화면 정리 사용 언어 - Python3 문제 - 바탕화면 정리 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 for문 (정답 맞춘 여부 O) 1. #의 위치를 x,y 리스트 에 저장한다. 2. (세로좌표, 가로좌표)로 표현해 출력한다. def solution(wallpaper): x, y = [], [] for i in range(len(wallpaper)): for j in range(len(wallpaper[i])): if wallpaper[i][j] == "#": x.append(j) y.append(i) return [min(y),min(x),max(y.. 2023. 4. 24.