분류 전체보기
[백준] 13414 수강신청 - Java
[백준] 13414 수강신청 - Java
2022.04.22해시 맵과 Comparator를 사용해 정렬을 구현하는 문제이다. value값에 대해 정렬을 진행해줘야 하고, keySet에 대해 list를 만든 후 Comparator를 통해 정렬했다. 출력할 때 list의 사이즈가 입력받은 N보다 작다면, N을 list의 사이즈로 설정해줘야 한다. (반례 : 2 2\n 00 00 ) import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new Strin..
[백준] 2910 빈도 정렬 - Java
[백준] 2910 빈도 정렬 - Java
2022.04.21해시 맵과 Comparator를 사용해 풀 수 있는 문제이다. 빈도 수가 같을 때는 먼저 나온 순서대로 정렬해야하는데, 이 부분은 클래스를 사용해 처리했다. import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseIn..
[백준] 9375 패션왕 신혜빈 - Java
[백준] 9375 패션왕 신혜빈 - Java
2022.04.21여집합으로 접근하는 편이 더 합리적이다. 문제를 풀 때 의상의 이름은 어차피 중복되지 않으니 별로 중요하지 않다. 의상의 종류에 초점을 맞춰 풀이하자. 해시맵에 의상의 종류를 넣어준다. (중복되면 값을 +1) 입지 않는 경우를 함께 고려해 value+1 을 진행한 후 모든 경우의 수에서 아무것도 입지 않는 경우를 빼주면 된다. import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new S..
[C] 정리 (1)
[C] 정리 (1)
2022.04.18sizeof연산자는 byte단위의 정수로 타입의 크기를 반환하며, 반환 타입은 size_t이다. (unsinged int 와 비슷) sizeof('A)의 결과는 1이 아니라 4이다. 컴파일 시 문자코드로 바뀌고, int타입으로 인식된다. 증감 연산자의 전위형(prefix) j = ++i; // 값이 참조되기 전에 증감연산자가 실행된다. 증감 연산자의 후위형(prefix) j = i++; // 값이 참조된 후에 증감연산자가 실행된다. 독립적인 하나의 문장으로 쓰일 경우에는 아무 차이가 없다. 큰 타입으로 자동으로 형변환 되지만, 비트 수가 맞지 않으면 값의 손실이 발생할 수 있다. null문자의 문자 코드는 0이다. 실수형은 근사값으로 저장되기에, 값을 비교할 때 오차가 발생할 수 있다. double타입과..
[백준] 9663 N-Queen - Java
[백준] 9663 N-Queen - Java
2022.04.18백트래킹을 사용해서 풀 수 있다. import java.util.*; import java.io.*; // 엔퀸 public class Main1 { static int ans; static int N; static int col[]; // 퀸의위치저장용 i , col[i] public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); col = new int[N+1]; backtracking(1); // 1부터 시작해서 백트래킹함 dfs느낌으로 System.out...
[백준] 20301 반전 요세푸스 - Java
[백준] 20301 반전 요세푸스 - Java
2022.04.18Iterator를 사용하면 쉽게 풀 수 있다. import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int K = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()..
[백준] 3078 좋은 친구 - Java
[백준] 3078 좋은 친구 - Java
2022.04.17처음에 풀다가 틀린 코드 먼저 소개하겠다. import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int K = Integer.parseInt(st.nextToken()); LinkedList q = new LinkedList(); for(int i=..
최소 신장 트리 - Kruskal (Union Find)
최소 신장 트리 - Kruskal (Union Find)
2022.04.14신장 트리는 그래프에서 모든 노드가 연결되어 있고, 사이클이 없는 그래프를 의미한다. 최소 신장 트리는 신장 트리에서 가중치를 부여하고, 만들 수 있는 신장 트리 중 가중치의 합이 최소인 그래프를 의미한다. 그래프가 주어졌을 때 최소 신장 트리를 찾을 수 있는 알고리즘으로는 크루스칼과 프림 알고리즘이 있다. 먼저 크루스칼 알고리즘에 대해 알아보자. Kruskal 그리디 알고리즘을 기반으로 해 최소 신장 트리를 구한다. 1. 그래프의 모든 노드들을 연결되지 않은 상태로 놓는다. 2. 존재하는 모든 간선들을 비용을 기준으로 정렬하고, 비용이 적은 간선부터 연결을 시작한다. (같은 비용이면 아무거나 선택해도 괜찮음) 3. 연결된 후 노드들의 최상위 노드를 확인 후 최상위 정점이 같으면 연결하지 않고 (사이클이..
[Spring Basic] 서블릿과 출력
[Spring Basic] 서블릿과 출력
2022.04.13보통 자바의 main메서드 옆에는 String[] args가 붙어있는 경우가 많다. 여기서 args가 의미하는 바는 cmd에서 자바 인터프리터로 프로그램을 실행할 때 추가되는 문자열을 담기 위한 배열이다. (프로그램이 사용자로부터 입력을 받거나 다른 프로그램과 데이터를 주고받을 때 사용된다) java Main.java arg1 arg2 arg3 이런 식으로 프로그램을 실행하면 arg1은 arg[0] 에, arg2는 arg[1] 에.. 이런 방식으로 args 배열이 설정된다. 마찬가지로, 브라우저에서 URL을 통해 호출을 진행하면 Tomcat이 HttpServletRequest객체를 만들고 요청한 정보를 담은 후 main메서드의 매개변수로 넘겨준다. public void main(HttpServletReq..
[Spring Basic] Java Reflection API
[Spring Basic] Java Reflection API
2022.04.13import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Hello World"); } } 위와 같은 소스코드 파일이 주어졌을 때, cmd에서 실행시키려면 해당 파일이 위치한 위치에서 java Main.java 를 입력하면 된다. 여기서 앞에 위치한 java는 java.exe로 자바 인터프리터를 의미하며, 인터프리터가 Main.java의 main메서드를 호출해 소스코드가 실행된다. (mai..
[C] const
[C] const
2022.04.13자바에서는 변수를 상수로 사용할 때 사용하는 키워드인 const이다. C는 시스템과 관계가 깊은 언어이기에 const키워드가 매우 중요하고, 나아가 C++까지도 영향을 미치는 키워드이다. const int * ptr 포인터 변수 앞에 const를 붙이는 경우를 살펴보자. "ptr주소를 통해 찾아간 값은 변경할 수 없다" 라는 의미를 지닌다. int num = 5; const int * ptr = # *ptr = 10; // ptr을 통해서는 값을 변경할 수 없다. 오류. num = 20; // 이거는 상관없음. ptr을 통해 변경하는거만 금지 const int num = 5; int * ptr = # // num은 상수인데, ptr을 통해 값이 변경될 수 있어서 오류! const int *..
[C] Call By Value
[C] Call By Value
2022.04.13#include #include int main() { int a = 10; int b = 20; int c = add(a,b); } int add(int n1, int n2){ int n3; n3 = n1 + n2; return n3; } 위의 코드처럼 함수를 호출하면, a와b에 대한 값은 변화 없이 지역변수에 복사만 하고 로직을 수행한다. 이를 Call By Value라고 한다. CBV를 사용해 코드를 작성하면, 값들을 재사용하기 좋고, 디버깅 할 때도 집중해서 관찰해야 하는 값이 한정되기 때문에 편하다. Java로 함수를 작성할 때도 CBV형식으로 작성하는 경우가 많았을 것이다. 함수에서 값 대신 포인터를 입력받도록 하면, main함수의 변수에 대해서도 값을 바꿀 수 있다. C에서 입력은 scanf..