all(408)
-
백준 트리 순회 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net 트리 구조를 TreeNode라는 클래스로, 리스트를 입력으로 받아 트리 구조로 만들어주는 함수 makeTree를 정의했습니다. 우선 입력을 받아와 노드의 개수 N을 제외하고 3개씩 묶어 nodes라는 리스트에 저장합니다. 이후 makeTree 함수를 이용해 트리 구조로 바꿔줍니다. 트리 구조로 바꿔준 input을 순서대로 전위순회 preorder, 중위순회 inorder, 후위순회 posto..
2021.06.08 -
백준 회전하는 큐 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net RotatingQueue라는 클래스를 정의하여 문제에 주어진 연산1,2,3을 구현했습니다. 뽑아야 하는 숫자들의 리스트를 targets로 정의하고, 이 숫자들을 하나씩 뽑으면서 현재 큐의 첫 번째 원소면 count 증가 없이 바로 연산1 수행, 앞쪽에 있으면 첫 번째 원소가 될 때까지 연산2를 수행하고, 수행한 횟수만큼 count 증가, 뒷쪽에 있으면 첫 번째 원소가 될 때까지 연산3을 수행하..
2021.06.08 -
프로그래머스 로또의 최고 순위와 최저 순위 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 먼저 num2rank 딕셔너리를 정의해 일치한 숫자의 개수를 로또 순위로 매핑할 수 있게 했습니다. sames 변수엔 lottos와 win_nums에서 겹치는 숫자의 개수를, zeros에는 lottos에서 0의 개수를 저장했습니다. 최고 순위는 0이 모두 당첨번호와 일치하는 겨우, 최저 순위는 0이 아무 당첨번호와도..
2021.06.08 -
프로그래머스 멀쩡한 사각형 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr from math import gcd def solution(w,h): # 최대공약수 gcf = int(gcd(w,h)) # 약분 abb_w = w//gcf abb_h = h//gcf # 망가진 사각형 개수 messed_squares = (abb_w + abb_h - 1) * h // abb_h return w * h - messed_..
2021.06.02 -
프로그래머스 기능개발 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 우선 durations라는 리스트에 각 작업별로 완료까지 며칠이 걸리는지 저장했습니다. 이는 (100-현재 progress 상태) / 해당 작업의 speed를 반올림한 값으로 구했습니다. 이후 기능은 작업 완료되었으나, 이전 기능이 완료되지 않아 아직 배포할 수 없는 경우, 이때의 이전 기능이 작업 완료까지 걸리는 시간은 waiting_to_finish에..
2021.06.02 -
프로그래머스 짝지어 제거하기 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 큐를 활용한 괄호 문제들과 비슷하게 풀이했습니다. 빈 큐인 q를 만들고, 입력으로 주어진 s의 문자를 하나씩 받으면서 q가 비어있거나, q의 마지막 요소가 현재 받은 문자와 다르면, q에 현재 문자를 추가합니다. q의 마지막 요소가 현재 문자와 같으면, q의 마지막 요소를 제거합니다. for 문이 종료되었을 때 q가 비어있으면 모든 문자가 제거된 것..
2021.06.02