일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코테
- Binary Tree
- 자바
- Binary Search
- hash table
- Method
- java
- dynamic programming
- Number Theory
- Counting
- Stack
- Math
- implement
- database
- 구현
- Data Structure
- string
- greedy
- array
- bit manipulation
- Tree
- sorting
- Class
- simulation
- geometry
- 파이썬
- 코딩테스트
- Matrix
- two pointers
- SQL
- Today
- Total
목록분류 전체보기 (1234)
코린이의 소소한 공부노트

대구소프트웨어마이스터고에서는 2학년부터 각자의 진로에 따라 다른 과를 선택하게 된다. 과를 선택하면 반이 나뉘게 된다. 1, 2반에는 소프트웨어개발과, 3반에는 임베디드소프트웨어개발과, 4반에는 인공지능소프트웨어개발과를 선택한 학생들이 모이게 된다. 동아리 학생들의 명단이 주어지면 동아리에 소프트웨어개발과, 임베디드소프트웨어개발과, 인공지능소프트웨어개발과가 몇 명 있는지 알아보고 아무런 과에도 속할 수 없는 1학년 학생들도 몇 명이 있는지 알아보자. 1. 입력 - 첫째 줄에는 동아리 학생들의 수 P가 주어진다. (1

1. Input 1) int[] nums 2. Output 1) nums의 요소들로 높이 균형 이진 검색 트리를 만들어서 반환 - 답이 여러 가지일 경우 1개만 반환 3. Constraint 1) 1

1. Input 1) TreeNode root 2. Output 1) root가 좌우대칭 트리라면 true, 아니면 false를 반환 3. Constraint 1) 노드 수의 범위는 [1, 1000]이다. 2) -100 Output: false 5. Code /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left =..
1. Input 1) ListNode head 2. Output 1) 정렬된 연결 리스트 head에서 모든 중복을 제외한 결과 리스트를 반환 3. Constraint 1) 노드 수의 범위는 [0, 300]이다. 2) -100 Output: [1,2,3] 5. Code /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { ..
1. Input 1) int[] nums 2) int target 2. Output 1) nums에 target을 찾아서 그 인덱스를 반환 2) nums에 target이 없다면 target이 들어가게 될 인덱스를 반환 3. Constraint 1) 1
1. Problem - 비트 마스크 기법을 이용해 여러 연산을 수행해보자. 1) 비트 마스크 기법은 비트 연산자(&, | 등)를 활용해서 정수(int)의 이진 비트를 처리해 메모리를 적게 사용하면서 프로그램의 속도를 높이는 기법이다. 2) 모든 문제에 사용할 수 있는 것은 아니지만, 사용할 수 있다면 소스코드가 직관적으로 바뀌게 된다. - 예를 들어, 출석을 1, 결석을 0으로 표시한다고 했을 때 한 반에 32명인데 3번과 6번이 출석이라면 00000000 00000000 00000000 00100100 (2) = 36으로 표현할 수 있다. 3) 정수를 2진 비트로 표현할 때 음수를 표현하는 것은 2의 보수를 이용한다. // 8비트로 예를 들자면 30 = 0001 1110 -30 -> 1110 0001 ..

2종류의 타일이 있다. 하나는 1이 쓰인 타일이고, 다른 하나는 00이 쓰인 타일이다. 지원이는 이 타일로 길이가 N인 2진 수열을 만들려고 한다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. (01, 10은 만들 수 없게 되었다.) 또한 N=4일 때는 0011, 0000, 1001, 1100, 1111 등 총 5개의 2진 수열을 만들 수 있다. 1. 입력 - 첫 번째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 2. 출력 - 첫 번째 줄에 지원이가 만들 수 있는 길이가 N인 모든 2진 수열의 개수를 15746으로 나눈 나머지를 출력한다. 3. 예제 4. 코드 import java.util.*; class Main { public stat..

1. 입력 - 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. - 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. - 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. - 1 ≤ N ≤ 100,000 - 1 ≤ M ≤ 100,000 - 1 ≤ i ≤ j ≤ N 2. 출력 - 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 3. 예제 4. 코드 import java.util.*; import java.io.*; class Main { static int n; static int[] tree; public static void main(String[] args) throws IOException { Buffe..

화은이는 이번 영어 시험에서 틀린 문제를 바탕으로 영어 단어 암기를 하려고 한다. 그 과정에서 효율적으로 영어 단어를 외우기 위해 영어 단어장을 만들려 하고 있다. 화은이가 만들고자 하는 단어장의 단어 순서는 다음과 같은 우선순위를 차례로 적용하여 만들어진다. (1) 자주 나오는 단어일수록 앞에 배치한다. (2) 해당 단어의 길이가 길수록 앞에 배치한다. (3) 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다 M보다 짧은 길이의 단어의 경우 읽는 것만으로도 외울 수 있기 때문에 길이가 M이상인 단어들만 외운다고 한다. 화은이가 괴로운 영단어 암기를 효율적으로 할 수 있도록 단어장을 만들어 주자. 1. 입력 - 첫째 줄에는 영어 지문에 나오는 단어의 개수 N과 외울 단어의 길이 기준이 되는 M이 공..

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 1. 입력 - 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) - 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. - 입력은 가입한 순서로 주어진다. 2. 출력 - 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구..