본문 바로가기

분류 전체보기117

대여 기록이 존재하는 자동차 리스트 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/157341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제는 알고있어라 sql 문제 일단 테이블 2개가 주어지고 각각 테이블에 필요한 값이 있으니까 조인을 햐야 한다 서브 쿼리를 사용해도 문제없지만 조인을 했다 일단 같은 열 이름을 조건에 주고 문제에서 원하는 세단과 대여 시작일이 10월이라는 조건을 만족하는 값을 걸러준다 날짜 계산이니까 문자로 바꾸고 가져온다 마지막으로 정렬 내림차순이니까 desc까지 sql 문제들은 쉬운 편이다 -- 코드를 입.. 2023. 3. 11.
네트워크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여기까지 왔으면 문제는 알고 있겠지 모르면 보고 오도록 컴퓨터 네크워크 몇 그룹이 있는지 찾는 문제다 노드로 이어져있으니까 연결 연결해서 몇 개가 나오는지 본다 일단 이런 걸 저번에 한번 본 적이 있는데 유니언 파인드를 사용해 풀었다 이것도 똑같은 문제니까 유니언 파인드를 사용한다 말 그대로 찾고 합치고 반복한다 이 방법이 유니언 파인드가 맞는지는 모르겠지만 뭐 비슷한 느낌인 듯 만약 i, j 가.. 2023. 3. 10.
1011.Fly me to the Alpha Centauri https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 문제는 보고 오도록 골드지만 생각보다 간단한 문제다 이 문제의 핵심은 우주선이 n 광년 움직였다면 다음에는 n-1 , n, n+1 광년 움직일 수 있다는 점 그리고 어차피 거리가 중요하기 때문에 시작점과 끝점은 중요하지 않다 결과적으로 최소로 움직이려면은 크게 움직여야 하기 때문에 n 광년, n+1광년, n+2 광년 이런 식으로 움직여야 한다 근데 이거.. 2023. 3. 9.
바탕화면정리 https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이제부터 문제 설명은 알아서 보고 바탕화면 삭제 모든 파일을 드래그하는 가장 작은 범위 구하기 아주 쉬운 문제다 파일을 한 번에 삭제하니까 그냥 모든 좌표 중에 최대, 최소 x, y 값을 구하면 된다 반복문 2번 써서 모든 좌표 값 구한 다음 max, min 적용하면 풀리겠지만 짧게 끝내려고 여러 가지 방법을 생각해 봤다 코드만 보면 망할 코딩 방법을 고르는 정처기 문제가 생각나지만 간단한 문제.. 2023. 3. 8.
2187. Minimum Time to Complete Trips https://leetcode.com/problems/minimum-time-to-complete-trips/ Minimum Time to Complete Trips - LeetCode Can you solve this real interview question? Minimum Time to Complete Trips - You are given an array time where time[i] denotes the time taken by the ith bus to complete one trip. Each bus can make multiple trips successively; that is, the next trip can sta leetcode.com 문제 해석부터 무슨 소리를 하는지 모르겠지만.. 2023. 3. 7.
N-Queen https://school.programmers.co.kr/learn/courses/30/lessons/12952 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다른 곳에서도 본 문제다. n*n 크기 체스판 위에 퀸 n 개를 서로 공격하지 못하게 배치하는 문제 일단 퀸 이 대각선과 수평수직 공격을 하니까 같은 줄 같은 열 같은 대각선에는 배치하지 못한다 이 조건을 써서 위에부터 한 마리씩 배치하면서 만약 불가능한 배치 면 다시 돌아가서 배치함 반복적으로 하니까 재귀 함수 사용하면 간단하다 모든 가능한 구역에서 위에 떨어져 있는 만큼 +- n을 해주면 대각.. 2023. 3. 6.
그룹별 조건에 맞는 식당 목록 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/131124 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2개의 테이블 회원 목록과 리뷰 정보 테이블 있을 때 가장 많이 리뷰를 작성한 회원의 리뷰 목록을 전부 출력 일단 가장 많은 리뷰를 작성한 회원을 찾는 방법은 group by를 써서 집계하고 그중 최댓값의 회원 아이디를 가져오는 2번의 서브 쿼리가 필요하다 근데 1번만 사용해서 아이디를 가져올 수 있을 거 같다는 생각이,. mysql 은 그냥 limit 쓰면 제일 위나 아래 에 값 가져올 수 있.. 2023. 3. 5.
마법의 엘리베이타 https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 엘리베이터가 갈 수 있는 값은 -1,1, -10,10 등 +- 10^n 제곱 형태 현재 위치(층)이 주어지면 0층까지 도달하는 최소 버튼 클릭수 16 이면 -1을 6번 하고 -10을 한번 하는 거보다 +1을 4번 하고 -10을 2번 하는 게 더 적은 값이다 일단 일의 자리부터 자릿수를 모두 더하는 구조로 시작한다 중요한 점은 5를 기준으로 5보다 크면 올라가는 게 이득이고 5보다 작으면 내려가는.. 2023. 3. 4.
443. String Compression https://leetcode.com/problems/string-compression/description/ String Compression - LeetCode Can you solve this real interview question? String Compression - Given an array of characters chars, compress it using the following algorithm: Begin with an empty string s. For each group of consecutive repeating characters in chars: * If the group's leng leetcode.com 문자들이 연속적으로 배열에 있으면 연속된 갯수만큼 [문자,연속값,.. 2023. 3. 3.
912. Sort an Array url : https://leetcode.com/problems/sort-an-array/description/ Sort an Array - LeetCode Can you solve this real interview question? Sort an Array - Given an array of integers nums, sort the array in ascending order and return it. You must solve the problem without using any built-in functions in O(nlog(n)) time complexity and with the smalles leetcode.com 주어진 배열을 정렬하는 문제 파이썬은 sorted 한 번이면 가능하지만 .. 2023. 3. 2.
아이템 줍기 https://school.programmers.co.kr/learn/courses/30/lessons/87694 [프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/87694) 아이템 줍기 문제 사각형 1~4개가 겹치게 주어지면 테두리만 따라 움직이면서 시작점과 도착점 최소 거리 구하는 문제 일단 그래프로 나타내기 위해 모든 좌표를 이어붙이는 작업을 한다 딕셔너리를 사용해서 현재 좌표를 키로 양쪽의 좌표 2개를 리스트로 넣어줌 교점이 발생하면 4개까지 .. 2023. 3. 1.
652. Find Duplicate Subtrees (leetcode) Given the root of a binary tree, return all duplicate subtrees. For each kind of duplicate subtrees, you only need to return the root node of any one of them. Two trees are duplicate if they have the same structure with the same node values. root 이진 트리가 주어지면 모든 중복 하위 트리를 반환합니다 . 각 종류의 중복 하위 트리에 대해 그 중 하나 의 루트 노드만 반환하면 됩니다 . 두 개의 트리가 동일한 노드 값을 갖는 동일한 구조를 갖는 경우 중복 트리 입니다 . 이진 트리가 있을 때 중복된 트리 노드를 반.. 2023. 2. 28.
테이블 해시 함수 문제 설명 완호가 관리하는 어떤 데이터베이스의 한 테이블은 모두 정수 타입인 컬럼들로 이루어져 있습니다. 테이블은 2차원 행렬로 표현할 수 있으며 열은 컬럼을 나타내고, 행은 튜플을 나타냅니다. 첫 번째 컬럼은 기본키로서 모든 튜플에 대해 그 값이 중복되지 않도록 보장됩니다. 완호는 이 테이블에 대한 해시 함수를 다음과 같이 정의하였습니다. 해시 함수는 col, row_begin, row_end을 입력으로 받습니다. 테이블의 튜플을 col번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 만약 그 값이 동일하면 기본키인 첫 번째 컬럼의 값을 기준으로 내림차순 정렬합니다. 정렬된 데이터에서 S_i를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 정의합니다. row_begin ≤ i.. 2023. 2. 28.
1262.알파벳 다이아몬드 문제 알파벳 다이아몬드는 정수 길이의 마름모가 여러 개 누적되는 모양이다. 각각의 마름모는 하나의 알파벳 소문자로 그리며, a로 시작해서 z로 끝난다. (가운데에서부터) 그리고, z 이후에는 다시 a로 시작한다. 알파벳 다이아몬드는 다음과 같이 생겼다. 동호는 이런 알파벳 다이아몬드를 타일로 만들어서, 방 바닥을 타일로 모두 채웠다. 예를 들어, N = 5인 아스키 다이아몬드를 세로 크기가 17, 가로 크기가 46인 방에 채운다면 다음과 같은 모양이 된다. 타일 하나위 위치는 행과 열을 이용해 표현한다. 행은 위에서부터 0행, 1행 이고, 열은 왼쪽부터 0열, 1열이다. 동호는 자신의 방의 어떤 부분 직사각형에 쓰여 있는 알파벳이 궁금해졌다. N이 주어지고, 동호가 알고 싶어하는 직사각형의 왼쪽 위 좌표.. 2023. 2. 27.
1024.수열의 합 문제 N과 L이 주어질 때, 합이 N이면서, 길이가 적어도 L인 가장 짧은 연속된 음이 아닌 정수 리스트를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 만약 리스트의 길이가 100보다 작거나 같으면, 연속된 수를 첫째 줄에 공백으로 구분하여 출력한다. 만약 길이가 100보다 크거나 그러한 수열이 없을 때는 -1을 출력한다. N과 L 이 주어지면 연속되는 숫자 L 개 이상의 합이 N이되는 경우 제목이 수열이 합인 거부터 수열의 합 공식을 사용하면 풀 수 있다는 느낌 a+(n-1) d에서 연속적인 수열이라 d=1이고 수열의 합 이고 수열의 시작값 a로 정리하면.. 2023. 2. 26.
2839.설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 출력 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정.. 2023. 2. 25.
1935.후위 표기식2 문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. 3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 100보다 작거나 같은 자연수이다. 후위 표기식을 앞에서부터 계산했을 때, 식의 결과와 중간 결과가 -20억보다 크거나 같고, 20억보다 작거나 같은 입.. 2023. 2. 24.
1058.친구 문제 지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람이 친구이거나, A와 친구이고, B와 친구인 C가 존재해야 된다. 여기서 가장 유명한 사람은 2-친구의 수가 가장 많은 사람이다. 가장 유명한 사람의 2-친구의 수를 출력하는 프로그램을 작성하시오. A와 B가 친구면, B와 A도 친구이고, A와 A는 친구가 아니다. 입력 첫째 줄에 사람의 수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 각 사람이 친구이면 Y, 아니면 N이 주어진다. 출력 첫째 줄에 가장 유명한 사람의 2-친구의 수를 출력한다. 문제가 무슨소리를 하는건지 .. 2023. 2. 23.
1269.대칭 차집합 문제 자연수를 원소로 갖는 공집합이 아닌 두 집합 A와 B가 있다. 이때, 두 집합의 대칭 차집합의 원소의 개수를 출력하는 프로그램을 작성하시오. 두 집합 A와 B가 있을 때, (A-B)와 (B-A)의 합집합을 A와 B의 대칭 차집합이라고 한다. 예를 들어, A = { 1, 2, 4 } 이고, B = { 2, 3, 4, 5, 6 } 라고 할 때, A-B = { 1 } 이고, B-A = { 3, 5, 6 } 이므로, 대칭 차집합의 원소의 개수는 1 + 3 = 4개이다. 입력 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어진다. 각 집합의 원소의 개수는 200.. 2023. 2. 22.
540. Single Element in a Sorted Array(Medium) You are given a sorted array consisting of only integers where every element appears exactly twice, except for one element which appears exactly once. Return the single element that appears only once. Your solution must run in O(log n) time and O(1) space. 정확히 한 번 나타나는 한 요소를 제외하고 모든 요소가 정확히 두 번 나타나는 정수로만 구성된 정렬된 배열이 제공됩니다. 한 번만 나타나는 단일 요소를 반환합니다 . 솔루션은 O(log n)시간과 O(1)공간에서 실행되어야 합니다. 배열에서 모두 2개씩.. 2023. 2. 21.
35. Search Insert Position Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You must write an algorithm with O(log n) runtime complexity. 개별 정수의 정렬된 배열과 대상 값이 주어지면 대상이 발견되면 인덱스를 반환합니다. 그렇지 않은 경우 순서대로 삽입된 인덱스를 반환합니다. O(log n)런타임 복잡성이 있는 알고리즘을 작성해야 합니다 . 이진탐색을 이용해 숫자를 삽입하는 인덱스를 찾는문제 class Solution: .. 2023. 2. 20.
정보처리기사 필기 81 2023. 2. 19.
103. Binary Tree Zigzag Level Order Traversal(Medium) Given the root of a binary tree, return the zigzag level order traversal of its nodes' values. (i.e., from left to right, then right to left for the next level and alternate between). root이진 트리가 주어 지면 노드 값의 지그재그 수준 순회를 반환합니다 . (즉, 왼쪽에서 오른쪽으로, 다음 레벨은 오른쪽에서 왼쪽으로 그리고 그 사이를 번갈아 가며). 이진 트리에서 한단계 내려갈때마다 왼쪽에서 오른쪽으로 출력 그 다음단계는 오른쪽에서 왼쪽으로 출력하는 문제 일단 한층씩 내려가면서 같은층 원소는 한 리스트에 넣어가면서 이중리스트를 만든다 그리고 홀수번째 리스트들.. 2023. 2. 19.
226. Invert Binary Tree (Easy) Given the root of a binary tree, invert the tree, and return its root. 이진 트리 가 주어 root지면 트리를 반전하고 루트를 반환합니다 . 주어진 이진트리 왼쪽과 오른쪽노드를 바꿔서 리턴하는 문제 매우 간단하다 한단계씩 내려가면서 왼쪽은노드는 오른쪽값으로 오른쪽 노드는 오른쪽값으로 바꿔주기만 하면 해결 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def invertTree(s.. 2023. 2. 18.
783. Minimum Distance Between BST Nodes(Easy) Given the root of a Binary Search Tree (BST), return the minimum difference between the values of any two different nodes itn the tree. 이진 탐색 트리에서 두 개의 노드 값의 차이 중에서 가장 작은 값을 찾아내는 문제 모든 트리를 지나다니면서 리스트에 값을 모아놓고 정렬하고 반복문을 사용해 최소 차이를 찾아냄 아마 더 간단한 방법이 있을 거 같다.. # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = lef.. 2023. 2. 17.
989. Add to Array-Form of Integer(Easy) 1.5v 정수의 배열 형식은num 왼쪽에서 오른쪽 순서로 숫자를 나타내는 배열입니다. 예를 들어 num = 1321 의 경우 배열 형식은 입니다 [1,3,2,1]. 정수 num의 배열 형식 과 정수가 주어지면 정수의 배열 형식을k 반환합니다 . num + k 리스트로 표현된 숫자와 정수로 표현된 숫자를 더하는 문제 일의 자리부터 한자리씩 순차적으로 더하면서 num리스트의 값을 바꿔나간다 10을 넘어가면 변수 s 에 저장하여 다음 연산에 사용 처음 num 리스트에 0을 넣는 이유는 가장 앞자리의 연산이 10을 넘어가면 리스트를 넘어가 에러가 나기때문에 0을넣고 연산후에 0이 남아 있으면 빼준다. class Solution: def addToArrayForm(self, num: List[int], k: in.. 2023. 2. 16.
104. Maximum Depth of Binary Tree(Easy) 1.5v 본문 Given the root of a binary tree, return its maximum depth. A binary tree's maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 바이너리 트리의 최대 깊이를 리턴하는 문제 재귀함수로 한단계씩 내려갈때마다 전역변수 s와 비교하여 최대깊이를 찾는다. 아마도 DFS 알고리즘인가 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val.. 2023. 2. 16.