목록Algorithms (112)
습관처럼
https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 | 프로그래머스 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 문제 설명 고고학자인 “튜브”는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 ..
https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)가 주어진다. 입력으로 주어지는 모든 수는 정수이다. www.acmicpc.net 전형적인 DP 문제입니다. import sys N,K= map(int,sys.stdin.readline().split())#입출력 result=[[0 for _ in range(K+1)]for _ in range(N)]#허용할수 있는 K의 가치의 범위 for i in range(N..
https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 카카오 신입 개발자 공채 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 programmers.co.kr 뉴스 클러스터링 문제 더보기 기사의 제목을 기준으로 블라인..
programmers.co.kr/learn/courses/30/lessons/60057?language=cpp 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 문제 설명 aabbaccc의 경우 2a2ba3c(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, abcabcdede와 같은 문자열은 전혀 압축되지 않습니다. 어피치는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라..
괄호변환 문제: 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 리스트가 존재한다. 해당 리스트중에 짝도 맞고 올바른 형태를 가지고 있는 리스트인 경우 바로 출력하고 아닌경우 수정을 거쳐 리스트를 출력한다 접근 방식: 처음에는 어떻게 접근해야 할지 감이 안왔지만 그럴때는 문제에 설명하는 것을 토대로 작성을 하는 것이 도움이 되는거 같습니다. 더보기 (' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 그리고 여기에 '('와 ')'의 괄호의 짝도 모두 맞을 경우에는 이를 올바른 괄호 문자열이라고 부릅니다. 예를 들어, "(()))("와 같은 문자열은 균형잡힌 괄호 문자열 이지만 올바른 괄호 문자열은 아닙니다. ..
주식가격 문제: 초 단위로 기록된 주식가격이 담긴 배열 prices을 토대로 가격이 떨어지지 않은 기간은 몇 초인지를 출력 접근방식: 1초 부터 n-1초까지의 가격 상승 및 유지된 시간을 파악 마지막 시간은 0초로 픽스 시킨다. 문제에서 주어진 테스트 케이스를 먼저 살펴보자. [1, 2, 3, 2, 3]이 prices로 주어진다. 1초 시점의 1원은 끝까지 가격이 떨어지지 않았다. 즉, 가격이 떨어지지 않은 기간은 4초이다. 2초 시점의 2원도 끝까지 가격이 떨어지지 않았다. 가격이 떨어지지 않은 기간은 3초이다. 3초 시점의 3원은 1초 후 가격이 2원으로 떨어졌다. 따라서 가격이 떨어지지 않은 시간은 1초이다. 4초 시점의 2원은 끝까지 가격이 떨어지지 않았다. 가격이 떨어지지 않은 기간은 1초이다...
스킬트리 문제: 유저의 스킬트리중 가능하지 않은 스킬트리를 제외하고 가능한 스킬트리의 개수를 구하다 접근 방식: 유저의 스킬트리중 규칙에 해당되지 않는 스킬트리를 제외하고 규칙을 따라야 하는 스킬만을 추려서 순서를 확인한다. 다음 순서가 맞는지 확인. 나의 풀이 def solution(skill, skill_trees): answer = 0 result=[] for idx,i in enumerate(skill_trees): result=[] for user_skill in i:#유저의 스킬에서 지켜야할 스킬트리의 스킬을 가지고 있는 경우 파악 if user_skill in skill: result.append(skill.index(user_skill))#가지고 있다면 오리지널 스킬순서 추가 set(res..
쇠막대기 문제: 레이저로 쇠막대기를 자를때 생성되는 쇠막대기의 총 개수를 출력하시오 접근 방법: 레이저 포인트의 위치를 리스트에 파악하고 자를때 현재 레이저 위치에 걸쳐있는 스택의 개수만큼 새로 생성된다. def solution(arrangement): answer = 0 pipe=[] laser = 0 for idx,i in enumerate(arrangement): if i == '(': laser=1 pipe.append(i) else: if laser==1: pipe.pop() answer += len(pipe)#레이저로인해 잘린 앞의 쇠파이프 개수 laser=0#레이저 포인트 체크 else: pipe.pop() #파이프의 끝부분 제거 answer+=1 #파이프이 끝부분으로 인해 생성된 쇠파이프 ..