Algorithm(49)
-
[알고리즘] 1713. 후보 추천하기
0. 문제 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 1. 문제 이해 시뮬레이션 정렬 2. 오답 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.PriorityQueue; import java.util.StringTokenizer; public class ..
2024.02.18 -
[알고리즘] 2493. 탑
0. 문제 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 1. 문제 이해 2. 제출 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class BOJ2493 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedRe..
2024.02.18 -
[알고리즘] 9229. 한빈이와 Spot Mart
0. 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 이해 조합 종류 설명 기호 순열 N개의 원소 중 R개의 원소로 순서를 가진 부분집합을 만드는 경우의 수 nPr 조합 N개의 원소 중 R개의 원소로 부분집합을 만드는 경우의 수 nCr 부분집합 N개의 원소로 부분집합을 만드는 모든 경우의 수 nHr 2. 제출 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class SWEA9229 { public stat..
2024.02.18 -
[알고리즘] 1233. 사칙연산 유효성 검사
0. 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 이해 트리 2. 제출 방법 1 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class SWEA1233 { static String[] opers = {"+", "-", "*", "/"}; static int level, firstLeaf, lastLeaf; static int N; static BufferedReader br; static StringTokenizer st; public static ..
2024.02.18 -
[Java] 비트 마스킹, Next_Permutation
1. 비트연산 연산자 설명 예시 & 비트 AND 연산 5 & 3 = 1 ^ 비트 XOR(배타적 OR) 연산 5 ^ 3 = 6 ~ 비트 NOT 연산 (1의 보수) ~5 = -6 > 2 = 1 >>> 부호 없는 오른쪽 시프트 연산 -5 >>> 2 = 1073741822 2. 비트마스킹 가. 순열 nPn → n! 이다. (보통 10!을 넘어서면 힘들다.) 비트마스킹을 사용해서 공간복잡도를 줄일 수 있다. 기존에는 boolean[] 또는 int[] 를 사용해서 방문 체크를 수행했다. 비트마스킹을 활용하면 int 하나에도 모두 저장할 수 있다. input[] // 숫자 배열 numbers[] // 순열 저장 배열 perm(cnt, flag) if cnt == N 순열 생성 완료 else for i from 0 t..
2024.02.18 -
[Java] 트리
Tree에 대한 이론은 앞서 정리했었다. [알고리즘] 그래프 이론 기초 0. 강의 2주차 이론 [알고리즘 강의] 2주차. 그래프이론, 인접행렬, 인접리스트, DFS, BFS, 트리순회 이번주차는 그래프이론과 DFS(깊이우선탐색), BFS(너비우선탐색) 그리고 트리순회인 preorder, inord... ramen4598.tistory.com 1. 이진트리 - 특성 높이 n(0부터 시작)에 위치한 노드의 최대 개수는 2^n개 높이가 n인 이진 트리가 가질 수 있는 노드의 … 최소 개수는 n+1개다. → 변질(편향) 이진트리 최대 개수는 2^(n+1)-1개다. → 포화 이진 트리 2. 이진 트리 - 구현 가. 배열 - 노드 번호를 인덱스로 사용 루트의 번호를 1로 함. n 레벨에 위치한 노드에 대하여 왼쪽에..
2024.02.18 -
[Java] 연결 리스트
1. 리스트 순서를 가진 데이터의 집합을 가리키는 추상자료형. 값의 중복을 허용한다. 순차 리스트 : 배열을 기반으로 구현. : Random access 가능. : 삽입/삭제 연산에 불리. 연결 리스트 : 메모리의 동적할당을 기반으로 구현. : 삽입/삭제에 유리. : 탐색에 불리. 2. 연결 리스트 자료의 논리적인 순서와 물리적인 순서가 일치하지 않을 수 있다. 개별적인 노드를 연결하여 하나의 자료구조를 형성. class Node { T data'; Node link; } node 데이터 필드 링크 필드 : 연결된 노드의 참조값을 저장. head 첫번째 노드에 대한 참조값을 가지고 있음. tail 마지막 노드에 대한 참조값을 가지고 있음. 가. 단순 연결 리스트 다음 노드에 대한 참조값만 가지고 있음. ..
2024.02.18 -
[Java] Heap
1. Heap 완전 이진 트리에 있는 노드 중에서 키 값이 가장 큰 노드나 키 값이 가장 작은 노드를 찾기 위해서 만든 자료구조. 무언가를 차곡차곡 쌓아 올린 더미 부모의 값은 항상 자식(들)의 값보다… 크거나 같은 최대 힙(Max heap) 작거나 같은 최소 힙(Min heap) 데이터의 삽입과 삭제는 모두 O(logN)이 소요. (완전 이진 트리일 때) 가. 데이터 삽입 가장 끝의 자리에 노드를 삽입한다. 그 노드와 부모 노드를 서로 비교한다. 규칙에 맞으면 그대로 두고, 그렇지 않으면 부모와 교환한다. 규칙에 맞을 때까지 반복한다. 나. 데이터 삭제 최댓값 혹은 최솟값이 저장된 루트 노드만 제거할 수 있다. 루트 노드를 제거한다. 루트 자리에 가장 마지막 노드를 삽입한다. 올라간 노드와 그의 자식..
2024.02.18