파이썬 이것저것/코테준비 31

[python] 프로그래머스 지도찾기

https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비트연산을 통해 #또는 공백을 풀어내는 문제였다. format으로 이진수를 변경할 때, n길이 만큼 공백형태를 변경해야 됬는데, 이부분을 format함수의 zfill 메서드를 사용해서 해결할 수 있었다. 아래에 해결코드이다. def decrypt_secret_map(n, arr1, arr2): decrypted_map = [] for i in range(n): # 두 배열의 각 원소를 이진수로 변..

[python] Stack을 활용한 괄호검사 알고리즘

수식 표기나, 프로그래밍 언어, HTML 문서 등 다양한 분야에서 괄호로 구분문자를 사용한다. 이들은 주로 간단한 데이터나 문자열을 묶어 그룹으로 만들고 그룹으로 끝낸다. 예를 들어 다음과 같은 소스코드가 있을때, array_max.h int find_array_max(int score[], int n) { int i, tmp = score[0]; for (i = 1; i tmp){ tmp = score[i]; } } return tmp; } 해당 프로그램이 정상작동 하려면, 괄호들이 같은 유형들 끼리 쌍을 이루어야 한다. 해당 코드에서 괄호를 검사 시 다음과 같은 조건이 해당되어야 한다. 1. 왼쪽 괄호의 갯수와 오른쪽 괄호 갯수가 같아야 한다. 2. 같은 타입의 괄호에서 왼쪽 괄호가 오른쪽 괄호보다 ..

[python] 백준 5597번 과제 안 내신 분..?

https://www.acmicpc.net/problem/5597 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net 풀이 student = [i+1 for i in range(30)] for _ in range(28): n = int(input()) student.remove(n) student.sort() for i in student: print(i)

[백준] 10813번: 공 바꾸기

https://www.acmicpc.net/problem/10813 10813번: 공 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 www.acmicpc.net N, M = map(int, input().split()) n_list = [i for i in range(1,N+1)] for _ in range(M): i, j = map(int, input().split()) ival, jval = n_list[i-1], n_list[j-1] n_list[i-1] = jval n_list[j-1] = ival for i in n_list: print(i, en..

[Python] 프로그래머스 코드 처리하기

https://school.programmers.co.kr/learn/courses/30/lessons/181932 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr enumerate를 사용하면 쉽게 풀 수 있다. def solution(code): mode = True ret = '' for idx, val in enumerate(code): if mode: # mode = 0 if val != '1' and idx % 2 == 0: ret = ret + val elif val == '1': mode = False else: # mode = 1 if val..

[Python] 배열의 길이를 2의 거듭제곱으로 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/181857 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요. def solution(arr): cnt = 0 while len(arr) != 2 ** cnt: if len(arr) == 2 ** cnt: break ..

[Python] 프로그래머스 예산

https://school.programmers.co.kr/learn/courses/30/lessons/12982?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(d, budget): d = sorted(d) i = 0 cnt = 0 if len(d) == 1: if d[0] > budget: return 0 else: return 1 for char in d: if cnt >= budget: break i += 1 cnt += char if cnt == budget: return i elif ..

[Python] 프로그래머스 부족한 금액 계산하기

https://school.programmers.co.kr/learn/courses/30/lessons/82612 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(price, money, count): rePrice = 0 total =0 for _ in range(count): rePrice += price total += rePrice if total < money: return 0 return total - money

[Python] 프로그래머스 과일 장수

https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(k, m, score): answer = [] n = 0 cycle=len(score) // m # 사이클 수 idx = m ci = 1 # 순번 sort_score = sorted(score, reverse=True) while True: if cycle == 1: # 1번만 돌때는 바로 끝냄 price = calbox(k, m, sort_score, n) an..

[Python] 프로그래머스 중앙값 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/120811 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 def solution(array): so_array = sorted(array) answer = round(len(array) // 2,0) return so_array[answer]