본문 바로가기

프로그래머스127

[프로그래머스] 쿼드 압축 후 개수 세기 (Python) https://programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr dp유형의 문제 같다 queue를 이용해서 하향식으로 풀었다. 나의 풀이 from collections import deque def check_all_number(x,y,l.. 2021. 11. 4.
[프로그래머스] n^2 배열 자르기 (Python) https://programmers.co.kr/learn/courses/30/lessons/87390 코딩테스트 연습 - n^2 배열 자르기 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부 programmers.co.kr left와 right를 나열해서 쓰다 보면 left 값과 right 값으로 위치를 찾을 수 있다. 이를 통해 풀이하면 된다. 나의 풀이 def solution(n, left, right): answer = [] for i in range(left,right+1): answer.append(max(i//n.. 2021. 11. 4.
[프로그래머스] 점프와 순간 이동(Python) https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr Greedy 유형 같긴 하다. 2로 나눠지면 그냥 나누고 안 나눠지면 1을 빼고 정답에는 1씩 더하면 된다. 나의 풀이 def solution(n): answer = 0 while n!=0: if n%2 ==0: n = n//2 else: n -=1 answer+=1 return answer 다른 사람 풀이 def solution(n): .. 2021. 11. 3.
[프로그래머스] 이진 변환 반복하기(Python) https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 주어진 조건을 그대로 구현하면 된다. def solution(s): deleted_zero, counting = 0,0 while s !='1': deleted_zero += s.count('0') counting+=1 s = bin(s.count('1'))[2:] return [counting,deleted_zero] 2021. 11. 3.
[프로그래머스] 캐시 (Python) https://programmers.co.kr/learn/courses/30/lessons/17680 2021. 11. 3.
[프로그래머스] 모음사전 (Python) https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 사전 규칙에 따라 알고리즘으로 구현하여 풀었다. 풀기 전에 itertools의 product를 떠올리긴 했는데 아직 익숙하지 않아서 그 방식으론 풀지 못했다. 나의 풀이 def change(vowel): next = {'A':'E','E':'I','I':'O','O':'U'} last_word = vowel[-1] .. 2021. 11. 3.
[프로그래머스] 전력망을 둘로 나누기 (Python) https://programmers.co.kr/learn/courses/30/lessons/86971 코딩테스트 연습 - 전력망을 둘로 나누기 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 전선을 하나씩 끊어 보며 bfs로 풀었다. from collections import deque def solution(n,wires): answer = 101 for i in range(len(wires)): wire = wires[:i] + wires[i+1:] graph = [[] for _ in range(n+1)] visited = [False for _.. 2021. 11. 3.
[프로그래머스] 영어 끝말잇기 (Python) https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 스택을 통해 구현했다. 나의 풀이 def solution(n, words): stac.. 2021. 11. 2.
[프로그래머스] 삼각 달팽이 (Python) https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 규칙을 찾아서 구현하면 된다. 항상 아래 , 오른쪽, 왼쪽 위 방향으로 움직인다. 나의 풀이 def solution(n): a = [['']*n for _ in range(n)] check = 0 now = [-1,0] num = 1 answer = [] for i in range(n,0,-1): x, y = now if check ==0: # down now = [x.. 2021. 11. 2.
[프로그래머스] 2개 이하로 다른 비트(Python) https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 처음에 xor 연산 + count('1') 2021. 11. 2.
[프로그래머스] 프렌즈4블록(Python) https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 주어진 조건대로 구현하면 된다. 나는 set으로 중복을 방지하고, 블록이 내려오는 것은 제거할 블록을 x 순으로 오름차순 정렬한 후 제거할 블록부터 맨 위칸까지 한 칸씩 모두 훑는 방식으로 구현했다. 나의 코드 def solution(m, n, board): answer = 0 check = True for i in range(m): bo.. 2021. 11. 2.
[프로그래머스] 괄호 회전하기 (Python) https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 올바른 괄호인지 체크하는 코드와, 왼쪽으로 회전하는 것을 어떻게 짜는지만 고민하면 되는 간단한 구현 문제다. 올바른 괄호 여부에서 dict를 활용하니 훨씬 깔끔하게 풀 수 있었다. 나의 풀이 def check_correct(s): bracket_dict = {']':'[',')':'(','}':'{'} stack = [] for v in s: if len(stack) ==0: stack.append(v) elif v in bracket_dict: if bracket_dict[v] == stack[-1]: stack.pop() else: r.. 2021. 11. 1.
[프로그래머스] 후보키 (Python) https://programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["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. 속성의 개수를 카운트하고 속성을 조합 2. 각 속성으로 유일성을 만족하는지 확인 3. 현재 조합한 속성이 기존에 조합했던 속성과 겹치는 것이 있는지 다시 조합 후 확인(최소성 만족하는.. 2021. 11. 1.
[프로그래머스] 순위 검색(Python) https://programmers.co.kr/learn/courses/30/lessons/72412 = int(want[4]): suc_candidate+=1 answer.append(suc_candidate) return answer 처음에 막 손가는대로 풀었을 때 정확성은 모두 맞았지만 효율성에서 모두 시간 초과가 났다. 리스트를 사용하면서 조회할 때 많은 시간이 걸린다고 판단해서 set이나 dict를 사용해서 풀 생각이 들었다. 수정된 풀이 from itertools import combinations from collections import defaultdict from bisect import bisect_left def combination_cases(data): cases = [] for.. 2021. 11. 1.
[프로그래머스] 예상 대진표(Python) https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 대진표 조건에 따라 구현하면 된다. 두 명이 같은 라운드에 있는 경우는 a-b의 절댓값이 1이고 둘을 더한 값에 4를 나눴을 때 나머지가 3이면 성립한다. Ex: (1,2) , (3,4) , (5,6) -> 모두 3+4n의 규칙을 가진다. 다음 라운드의 번호를 구하려면 홀수일 경우 +1 후 2로 나누고 짝수일 경우 그냥 2로 나눠준다 나.. 2021. 10. 31.