목록분류 전체보기 (500)
공부한것들을 정리하는 블로그 입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net import java.util.*; public class Main { //테트로미노 static int[][][] BLOCKS_14500 = { //19 4 2 {{0,0}, {0,1}, {0,2}, {0,3}} ,{{0,0}, {1,0}, {2,0}, {3,0}} ,{{0,0}, {1,0}, {0,1}, {1,1}} ,{{0,0}, {0,1}, {0,2}, {1,2}} ,{{0,0}, {1,0..
https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net static boolean[] broken = new boolean[10]; public static void bf_1107(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 이동 원하는 채널 int m = sc.nextInt(); // 고자안 채널 갯수 for (int i = 0; i < ..
https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int E = sc.nextInt() -1; int S = sc.nextInt() -1; int M = sc.nextInt() -1; fo..
https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { //사탕게임 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); char[][] a = new char[n][n]; int ans = 1; for (int i = 0; i < n; i++) { a[i] = sc.next().toCharArray(); } for (i..
보호되어 있는 글입니다.
JVM의 특징 1. 스택기반의 VM 2. OS와 JAVA 사이에서 중계자 역할을 함으로써, JAVA가 OS에 구애받지 않도록 함 3. 메모리관리, GC를 수행 자바 프로그램 실행 과정 1. 애플리케이션이 실행되면 프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받는다. JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 2. 자바소스(.JAVA)를 자바 컴파일러(javac)가 자바 바이트코드(.CALSS)로 변환한다. JVM에서 자바 바이트코드를 Class Loader를 통해 로딩한다. 3. JVM에서 자바 바이트코드에 대해 검증/재해석/바이너리 코드로 변경 작업을 수행한다. 4. 이후 런타임 과정에서의 수행과정 1) 클래스들의 static 변수를 자동 초기화..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
1. 경우의 수 • N명의 사람이 한 줄로 서는 경우의 수 → N × (N-1) × … × 1 = N! • N명의 사람 중에서 대표 두 명을 뽑는 경우의 수 → N × (N-1) / 2 • N명의 사람 중에서 대표 세 명을 뽑는 경우의 수 → N × (N-1) × (N-2) / 3! • N명의 사람 중에서 반장 1명과 부반장 1명을 뽑는 경우의 수 → N × (N-1) • N명의 사람이 있을 때, 각 사람이 영화를 볼지, 보지 않을지 결정한다. 가능한 조합의 수 → 2N 2. 그냥 다 해보기 예제 : 일곱 난쟁이 https://drsggg.tistory.com/537 브루트 포스 2309번 일곱 난쟁이 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 ..
https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] intArr = new int[9]; int sum = 0; int highA = 0; int highB = 0; //난쟁이 9명의..
브루트 포스(Brute Force) 브루트 포스는 '모든 경우의 수'를 다 해보는 것이다. 이 때, 경우의 수를 다 해보는데 걸리는 시간이 문제의 시간 제한을 넘지 않아야 한다. ( * '모든 경우의 수' : 가능한 벙법 ) 따라서 브루트 포스 문제의 경우 '모든 경우의 수'가 몇가지 나오는지 알아보는 것이 상당히 중요 브루트 포스는 모든 방법을 1번씩 시도해보기 때문에 아래 3가지 단계를 생각해볼 수 있다. 1. 문제의 가능한 경우의 수를 계산해본다. • 직접 계산을 통해서 구한다. 대부분 손으로 계산해볼 수 있다. 2. 가능한 모든 방법을 다 만들어본다. • 하나도 빠짐 없이 만들어야 한다. • 대표적으로 그냥 다 해보는 방법, for문 사용, 순열 사용, 재귀 호출 사용, 비트마스크 사용이 있다. ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
스프링 이야기에 왜 객체 지향 이야기가 나오는가? • 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 • DI(Dependency Injection): 의존관계, 의존성 주입 • DI 컨테이너 제공 • 클라이언트 코드의 변경 없이 기능 확장 • 쉽게 부품을 교체하듯이 개발 정리 • 모든 설계에 역할과 구현을 분리하자. • 자동차, 공연의 예를 떠올려보자. • 애플리케이션 설계도 공연을 설계 하듯이 배역만 만들어두고, 배우는 언제든지 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계다. • 이상적으로는 모든 설계에 인터페이스를 부여하자 실무 고민 • 하지만 인터페이스를 도입하면 추상화라는 비용이 발생한다. • 기능을 확장할 가능성이 없다면, 구체 클래스를 직접 사용하고, 향후 꼭..