Algorithm

    [백준 1260] DFS와 BFS - 인접 행렬 이용

    [백준 1260] DFS와 BFS 문제 출처 : https://www.acmicpc.net/problem/1260 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue; public class Problem1260 { static int[][] map; static..

    [백준 10026] 적록색약

    [백준 10026] 적록색약 문제 출처 : https://www.acmicpc.net/problem/10026 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public class Problem10026 { static char map[][]; static boolean visited[][]; static int n; s..

    [백준 2468] 안전 영역

    [백준 2468] 안전 영역 문제 출처 : https://www.acmicpc.net/problem/2468 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public class Problem2468 { static int[][] map; // 2차원 배열 생성 static boolean[][] visited; // 방문한 영역 확인할 2차원 boolean 배열 생성..

    [알고리즘] Queue

    [알고리즘] Queue Queue 1234567891011121314151617181920212223242526272829303132333435363738394041424344public class Queue { public static int front = -1; public static int rear = -1; public static int[] q = new int[5]; public static boolean isFull() { return rear == q.length -1; } public static boolean isEmpty() { return front == rear; } public static void enQueue(int item) { if(isFull()) { System.ou..

    [백준 2667] 단지번호 붙이기

    [백준 2667] 단지번호 붙이기 문제 출처 : https://www.acmicpc.net/problem/2667 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192import java.util.ArrayList;import java.util.Collections;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class Problem2667 {..

    [swexpert] 1228. 암호문1

    [swexpert] 1228. 암호문1 문제 출처https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14w-rKAHACFAYD&categoryId=AV14w-rKAHACFAYD&categoryType=CODE 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList; ..

    [알고리즘] 순열 & 조합

    [알고리즘] 순열 & 조합 조합 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; /** * * 조합 4 2 (4C2) 0 1 0 2 0 3 1 2 1 3 2 3 * */ public class comb { public static void comb(int[] set, int size, int n, int k, int index){ if(k==0) { for (int i = 0; i

    [백준 1874] 스택 수열

    [백준 1874] 스택 수열 문제 출처 : https://www.acmicpc.net/problem/1874 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Stack; public class Problem1874 { public static void main(String[] args) throws IOException { BufferedReader br = ne..

    [백준 1057] 토너먼트

    [백준 1057] 토너먼트 문제 출처 : https://www.acmicpc.net/problem/1057 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;​public class Problem1..

    [알고리즘] 후위표기법

    [알고리즘] 후위표기법 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import java.util.ArrayList;import java.util.Scanner;import java.util.Stack; public class 후위표기법 { public static int priority(char ch) { switch (ch) { case '*': case '/': return 2; case '+': case '-': return 1; case '(': case ')': return 0; }..

    [백준 8979] 올림픽

    [백준 8979] 올림픽 문제 출처 : https://www.acmicpc.net/problem/8979 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128import java.util.Arrays;import java.util.Collections;import jav..

    [백준 10819] 차이를 최대로

    [백준 10819] 차이를 최대로 문제 출처 : https://www.acmicpc.net/problem/10819 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import java.util.Scanner; public class Problem10819 { static int[] t = new int[27483084]; // static으로 배열 선언 static int cnt = 0; // static으로 int형 변수 선언 public static void swap(int[] arr, int a, int b){ // swap 메소드 int..

    [백준 1182] 부분집합의 합

    [백준 1182] 부분집합의 합 문제 링크 : https://www.acmicpc.net/problem/1182 1234567891011121314151617181920212223242526272829303132333435363738394041424344import java.util.Scanner; public class 백준1182 { static int cnt = 0; public static void subset(int[] set, int size, int n, int[] arr, int index, int s) { if(n == index) { int sum = 0; for (int i = 0; i

    [swexpert] 1210. Ladder1

    [swexpert] 1210. Ladder1 문제 출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh&categoryId=AV14ABYKADACFAYh&categoryType=CODE 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import java.util.Scanner; public class Solution { static int[][] data = ne..

    [swexpert] 1225. 암호생성기

    [swexpert] 1225. 암호생성기 문제 출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD&categoryId=AV14uWl6AF0CFAYD&categoryType=CODE 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import java.util.Scanner; public class SW문제해결_암호생성기 { static int[] arr = new int[10]; public static void cycle(int[] a) { //..

    [swexpert] 1206. View

    [swexpert] 1206. View 문제 출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh&categoryId=AV134DPqAA8CFAYh&categoryType=CODE 123456789101112131415161718192021222324252627282930313233343536373839import java.util.Scanner; public class SW문제해결_View { static int[][] arr = new int[1000][255]; // 배열 생성 public static void main(String[] args) { Scanner sc ..

    [백준 1260] DFS와 BFS - 인접 리스트 이용

    [백준 1260] DFS와 BFS 문제 출처 : https://www.acmicpc.net/problem/1260 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class Main { public stati..

    [백준 1018] 체스판 다시 칠하기

    [백준 1018] 체스판 다시 칠하기 문제 출처 : https://www.acmicpc.net/problem/1018 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455import java.util.Scanner; public class Problem1018 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int N = s.nextInt(); //행 int M = s.nextInt(); //열 int[][] c = new int[N][M]; // 체스판 String[] str = ne..

    [swexpert] 5431. 민석이의과제체크하기

    [swexpert] 5431. 민석이의과제체크하기 문제 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl3rWKDBYDFAXm&categoryId=AWVl3rWKDBYDFAXm&categoryType=CODE 123456789101112131415161718192021222324252627282930313233343536import java.util.Scanner; public class Solution_5431 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int ts = sc.nextInt(); for (..

    [swexpert] 1208. Flatten

    [swexpert] 1208. Flatten 문제 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103import java.util.Arrays;im..

    [swexpert] 2063. 중간값 찾기

    [swexpert] 1204. 최빈수 구하기 문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QPsXKA2UDFAUq&categoryId=AV5QPsXKA2UDFAUq&categoryType=CODE 12345678910111213141516171819202122import java.util.Arrays;import java.util.Scanner; public class Solution_2063 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int ts = s.nextInt(); // 테스트 케이스 int..

    [swexpert] 1204. 최빈수 구하기

    [swexpert] 1204. 최빈수 구하기 문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13zo1KAAACFAYh&categoryId=AV13zo1KAAACFAYh&categoryType=CODE 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import java.util.Scanner; public class Solution_1204 { public static void main(String[] args) { Scanner s = new Scanner(System.in); int ts..

    [알고리즘] 배열 회전 프로그램

    temp에 arr[0]을 저장한 후, 한번씩 회전하는 알고리즘을 구현해서 만드는 방법 #include using namespace std; void leftRotatebyOne(int arr[], int n){ int temp = arr[0], i; for(i = 0; i < n-1; i++){ arr[i] = arr[i+1]; } arr[i] = temp; } void leftRotate(int arr[], int d, int n){ for(int i = 0; i < d; i++) leftRotatebyOne(arr, n); } void printArray(int arr[], int n){ for(int i = 0; i < n; i++) cout {4 5 3 7 8 6 10 11 9 1 2 12} c)..

    [C++] 배열 사이즈 구하기

    배열의 사이즈를 구할 때는 sizeof를 사용하자. 이때 배열의 sizeof에 첫번째 인덱스 sizeof를 나눠줘야 원하는 사이즈가 나오는 것을 기억할 것 #include using namespace std; int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout

    [삼성 SDS 알고리즘 사전테스트] 순환공간

    [삼성 SDS 알고리즘] 순환공간 지난 일요일 사전테스트가 종료되었습니다. 테스트기간동안 푼 문제 해결방법을 포스팅하려고 합니다.문제 출처 : https://koitp.org/problem/SDS_TEST_PAGE/read/ 문제N 개의 행, M 개의 열로 이루어진 직사각형 모양의 말판이 있다. 이 말판의 각 칸은 정사각형으로 이루어져 있으며, 당신의 말은 이 말판의 칸 중 한 곳(출발지)에 위치해 있다고 한다.당신의 말은 상, 하, 좌, 우 방향의 인접한 곳으로 한 번에 한 칸씩 이동할 수 있으며, 특정 목적지까지 최소의 이동횟수로 가는 방법을 찾고자 한다.그런데 이 말판은 특이한 특징이 있는데, 가장 왼쪽 칸에서 왼쪽으로 한 칸 이동하면 그 행의 가장 오른쪽 칸으로 가며, 마찬가지로 가장 오른쪽 칸에..

    [삼성 SDS 알고리즘 사전테스트] 마지막 생존자

    [삼성 SDS 알고리즘] 마지막 생존자 지난 일요일 사전테스트가 종료되었습니다. 테스트기간동안 푼 문제 해결방법을 포스팅하려고 합니다.문제 출처 : https://koitp.org/problem/SDS_TEST_PAGE/read/ 문제B.C 1500년경 당신은 고대 바빌로니아 왕국의 마지막 생존자들을 이끌고 북쪽으로 이동해 불모지를 지나 미개척지 땅에 들어섰습니다. 당신은 생존자들과 정찰을 통해 주변 N * N 정사각형 구역에 대해 격자 단위의 정보를 얻었습니다. 당신은 이 구역에서 도시를 세우기 적합한 지역을 찾아 그 곳에서 생존자들과 새로운 문명을 세우고자 합니다. ‘도시를 세우기 적합한 장소’ 란 도시를 세우는 위치 및 가로, 세로, 대각선의 8방향으로 인접한 위치에 불모지가 존재하지 않고, 물과 ..

    [삼성 SDS 알고리즘 사전테스트] 쉬어가는 페이지

    [삼성 SDS 알고리즘] 쉬어가는 페이지 지난 일요일 사전테스트가 종료되었습니다. 테스트기간동안 푼 문제 해결방법을 포스팅하려고 합니다.문제 출처 : https://koitp.org/problem/SDS_TEST_PAGE/read/ 문제수진이는 기말고사를 앞두고 시험 공부를 하고 있었다. 그런데 공부해야 하는 참고서의 두께가 너무 두꺼워 참고서의 모든 페이지를 볼 엄두가 나지 않았다. 참고서 전체가 모두 시험범위이었기 때문에 수진이는 범위 전체를 공부하는 것을 포기하고 특정 페이지만 골라 띄엄띄엄 보기로 했다.띄엄띄엄 보는 방법은 다음과 같다. 우선 시작할 페이지 S 와 건너 뛸 페이지의 수 J 를 정한다. 그런 다음, S 페이지를 보고 J 페이지만큼 건너 뛴 다음 페이지를 보고, 또 J 페이지만큼 건너..

    [삼성 SDS 알고리즘] 가장 많은 수

    [삼성 SDS 알고리즘] 가장 많은 수 문제 출처 : https://koitp.org/problem/SDS_PRO_2_4/read/ 문제NN개의 정수가 주어진다. 이 중 가장 많이 등장하는 수를 구하시오. 만약 이런 수가 여러 개라면 작은 수를 출력하세요.입력첫 번째 줄에는 정수의 개수 NN이 주어진다. (1≤N≤1000000)(1≤N≤1000000)두 번째 줄부터 N개의 줄에 걸쳐 각 줄에 하나의 정수가 주어진다. 이 수의 절대값은 231−1231−1 이하이다.출력가장 많이 등장하는 정수를 출력하시오.힌트예제 입력4 1 2 3 3 예제 출력3 문제 풀이 123456789101112131415161718192021222324252627282930313233343536373839404142434445464..

    [백준 2805] 나무 자르기

    [백준 2805] 나무 자르기문제 출처 : https://www.acmicpc.net/problem/2805 문제상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기을 이용해서 나무를 구할것이다.목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20,..

    [알고리즘] 이분 탐색(Binary Search)

    [알고리즘] 이분 탐색(Binary Search) 정렬되어있는 리스트가 있을 때, 가운데 값과 비교해나가면서 가능한 정답의 범위를 절반으로 줄여나가며 어떤 수가 존재하는 지, 존재하지 않는 지 찾는 알고리즘 언제 이용?정답을 구하는 문제A에서 B까지 가는 가장 빠른 시간을 구하는 것 - 최적화가능여부를 판별하는 문제로 바꾸기 가능가능한지 살펴보는 문제A에서 B까지 X라는 시간으로 이동할 수 있을까? - YES/NO ex. A에서 B까지 가는 가장 빠른 시간이 M인 경우M보다 빠른 시간 - 모두 불가능M보다 큰 시간 - 모두 가능 문제에 주어지는 기준 점(X)를 통해 가능성 여부를 따져서 정답을 찾아낸다. 이분 탐색에 해당하는 문제 랜선 자르기 : https://www.acmicpc.net/problem/..