본문 바로가기
  • 개발 삽질 블로그

전체 글89

백준 10973: 이전 순열(JAVA) https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 이전에 풀었던 다음 순열 문제를 조금만 변형하면 되는 문제다. 전체적인 알고리즘 논리는 같다. 부등호 방향만 반대로 해주면 된다. import java.util.*; public class Main { public static void swap(int [] a, int i, int j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } public static boolean nextPermutation(int[] a) .. 2022. 10. 12.
백준 10972: 다음 순열(JAVA) https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 어떤 순열이 주어지면 사전순으로 다음에 오는 순열을 구하는 문제이다. 알고리즘 분류는 수학과 조합론이다. 1 2 3 4 1 2 4 3 1 3 2 4 ... 1) 배열의 끝부터 a[i] > a[i-1] 인 구간을 찾는다. 2) a[i-1]과 a[i...last]까지 중 가장 작은 값의 자리를 바꾼다. 이때 a[i...last]는 내림차순으로 정렬되어있으므로 (-> 1전 과정을 찾기 전까지는 a[i] 0 && a[i-1] >= a[i]) { i--; } // .. 2022. 10. 12.
순열과 조합 1)순열 import java.util.*; public class Main { public static void solution(char []item, char []bucket, int k) { if( k == 0 ) { //다 뽑았으면 출력 for(int i=0; i 2022. 10. 12.
멱집합(PowerSet) a가 들어가거나 안 들어가거나 b가 들어가거나 안 들어가거나 ... f가 들어가거나 안 들어가는 모든 경우의 수는 2^n이다.(n은 원소의 개수) pick이라는 boolean 배열을 두고 해당 인덱스에 원소를 뽑았을 경우 true, 안 뽑았을 경우를 false라고 두고 재귀적으로 구현했다. import java.util.*; public class Main { private static char data[] = {'a', 'b', 'c', 'd', 'e', 'f'}; private static boolean [] pick = new boolean[6]; private static int n = data.length; public static void main(String[] args){ powerSet(.. 2022. 10. 12.
Counting Cells in Blob(Blob 셀 수 세기) 재귀를 이용하여 구현하였다. public class Main { //이차원 배열로 이미지 표현 static int arr[][] ={ {1,0,0,0,0,0,0,1}, {0,1,1,0,0,1,0,0}, {1,1,0,0,1,0,1,0}, {0,0,0,0,0,1,0,0}, {0,1,0,1,0,1,0,0}, {0,1,0,1,0,1,0,0}, {1,0,0,0,1,0,0,1}, {0,1,1,0,0,1,1,1}}; //상수로 컬러 표현 public static final int BackgroundColor = 0; public static final int ImageColor = 1; public static final int AlreadyCounted = 2; public static void main(Strin.. 2022. 10. 12.
[스무디] 어셈블리어 강의 8~12강 정리 8~9강 점프 JMPJMP: 실행의 흐름을 변경, 원하는 메모리 주소로 가야할 때ex) JMP [401005]*EIP: 다음에 실행할 주소를 담고있는 레지스터-현재 실행될 명령어의 크기를 계산하고 그 크기만큼 현재 실행될 코드의 주소값에 더해주어 다음에 실행될 코드 주소를 가르켜 줌-EIP는 범용 레지스터가 아니기 때문에 MOV 연산 사용 불가, JMP로 흐름을 변경해야함#해킹: EIP라는 레지스터에 들어가는 값을 해커가 원하는 값으로 바꾸면 됨!  10강 증감 명령어INC: 증가 연산, ++과 같은 역할INC [REG/MEM] DEC: 감소 연산, --와 같은 역할DEC [REG/MEM]11강 ADD, SUBADD: 덧셈 연산ADD op1, op2 -> op1에 op2를 더한다. SUB: 뺄셈 연산SU.. 2022. 10. 6.