본문 바로가기

Programming

(89)
[프로그래머스/Python] 프린터(큐) 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr idx를 가지고 다니는 방식으로 작성했다. from collections import deque def solution(priorities, location): answer = 0 q = deque() for idx, paper in enumerate(priorities): q.append([paper, idx]) while q: cur = q.popleft() paper, idx = cur[0], cur[1] #우선순위 체크 flag = 1 for i in q: ..
[백준/Python] 백준 1697번 숨바꼭질 from collections import deque N, K = map(int, input().split()) visit = [False]*100001 cur = N time = 0 q = deque([[cur,time]]) while q: v = q.popleft() cur, time = v[0], v[1] if visit[cur] == False: if cur == K: print(time) break visit[cur] = True if cur + 1 = 0: q.append([cur-1, time+1]) if cur*2
[프로그래머스/Python] 수식 최대화 (반복/재귀) 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 1. 반복문 풀이 from itertools import permutations def calc(prior, exp): for i in prior: while i in exp: idx = exp.index(i) exp[idx-1] = str(eval(exp[idx-1]+exp[idx]+exp[idx+1])) exp = exp[:idx] + exp[idx+2:] return exp[0] def solution(expression): # 1)우선순위 만들기 ope..
[프로그래머스/Python] 프렌즈4블록 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr def solution(m, n, board): answer = 0 dx = [1,1,0] dy = [1,0,1] def cnt_one(m,n,visit): cnt = 0 for i in range(m): for j in range(n): if visit[i][j] ==1: cnt +=1 return cnt while True: ''' 1) 사각형이 확인되면 그때의 좌표에 visit 1표시하기 2) visit이 1인 갯수 카운트해서 answe..
[프로그래머스/Python] 파일명 정렬 (문자열처리(반복/정규식) 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 1. 반복을 이용한 문자열 처리 def solution(files): answer = [] idx=0 for f in files: f = f.lower() H = "" for i in range(len(f)): if f[i].isdigit(): f = f[i:] break else: H += f[i] N = "" for i in range(len(f)): if f[i].isdigit()==False: f = f[i:] break else: N += f..
[프로그래머스/Python] 후보키(조합/비트연산) 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 1. 조합 from itertools import combinations from collections import Counter def makeTuple(lists, tuples): # lists: 튜플로 변환할 리스트 # tuples: (몇개씩 묶어서 튜플로 만들 것인지) tmp = [] for i in tuples: tmp.append..
[프로그래머스/Python] 올바른 괄호(스택) 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호 programmers.co.kr def solution(s): answer = True stack = [] if len(s) % 2 != 0: return False for i in s: if stack and i == ')': stack.pop() if i == '(': stack.append(i) return len(stack)==0
[프로그래머스/Python] 숫자의 표현 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr 끝까지 다 볼 필요는 없고 반만 보면 된다. def solution(n): nums = [i for i in range(0,n+1)] answer = 1 last = n//2 if n%2==0 else n//2+1 for i in range(1,last+1): left, right = i, i+1 while right = n: if tmp_sum == n: answer +=1 break else: right += 1 return answer