10992번 입력, 출력 Memo 2*n-1만큼 별찍어주는 줄에 대한 조건 만들어주기 양 옆에 찍히는 별은 하나씩이므로 for문 필요없음 공백 찍는 for문에서 시간 조금 더 걸림 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.close(); for(int i= 1; i
1924번 문제 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. 출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. Memo 처음 접근을 java 에 Date 관련으로 요일을 출력하는 함수가 있을 것이라고 생각함 주어진 정보를 보고 왜 주어졌는지 활용방법을 먼저 고민해보기 month와 요일을 배열에 두고 시작했음 public ..
11721번 문제 알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다. 한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다. 출력 입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다. Memo 처음에는 charAt으로 접근하려고 하지 않고 String 을 배열화 하려고했었다. 앞으로 String 을 받아 그 안에있는 문자를 처리할 때에는 charAt 을 먼저 떠올려야 겠다. public class Main { public st..
11719번 문제 입력 받은 대로 출력하는 프로그램을 작성하시오. 입력 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 있을 수도 있다. 출력 입력받은 그대로 출력한다. Memo 11718번과 같음 입력받음과 동시에 출력하는 것인데 공백이 있고 없고의 차이 next가 아닌 nextLine을 통해 입력받았기 때문에 공백을 그대로 인식하고 출력할 수 있음 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNex..
10953번 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. A와 B는 콤마(,)로 구분되어 있다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. Memo split함수 사용방법을 잊고있었어서 찾아보고 품 arr[i] 를 변수에 저장하고 Integer.parseInt 하는것과 변수에 저장하지 않고 바로 넣으면 어떻게 되는지 궁금해서 해봄 시간은 변화없고 메모리는 아주 소량만큼 차이남 public class Main { public static void main(String[] args) { Scanner sc = ..
1000번 문제 두 정수를 입력받아 A+B를 출력하는 프로그램을 작성 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 헷갈린 부분 처음에 클래스명을 Main으로 해주지 않아서 컴파일에러 Scanner 를 임포트 해주지 않아서 컴파일에러 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); int C = A + B; System.out.println(C); } } 2558번 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작..
다이나믹 프로그래밍이란 하나의 문제를 단 한 번만 풀도록 하는 알고리즘 분할 정복 기법은 '정렬'과 같은 몇몇 요소에 대해 동일한 문제를 다시 푼다는 단점을 가지고 있음. 단순 분할 정복으로 풀면 심각한 비효율을 낳는 대표적인 예시로 피보나치 수열이 있음 피보나치 수열의 점화식 D[i] = D[i - 1] + D[i -2] 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 이런 경우 병합 정렬처럼 단순 분할 정복 기법을 사용하는 경우 이미 해결한 문제를 다시 반복적으로 해결하여 비효율적임 다이나믹 프로그래밍 가정 1번 가정 큰 문제를 작은 문제로 나눌 수 있음 2번 가정 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일함 크고 어려운 문제가 있다면 먼저 잘게 나누고 해결하여..
범위조건이 있는 경우에 한해서 굉장히 빠른 알고리즘 속도는 O(N) 단순하게 크기를 기준으로 세는 알고리즘임 public class CountingSort { int temp; public static void counting() { int []count = new int[5]; int array[] = { 1,3,2,4,3, 2,5,3,1,2, 3,4,4,3,5, 1,2,3,5,2, 3,1,4,3,5, 1,2,1,1,1}; for(int i = 0; i < 5; i++) { count[i] = 0; } for(int i = 0; i < 30; i++) { count[array[i] - 1]++; } for(int i = 0; i < 5; i++) { if(count[i] != 0) { for(int j..
- Total
- Today
- Yesterday
- dfs
- 병행프로세스
- 클래스
- 세마포어
- react
- C++
- 이진탐색
- stackframe
- 재귀함수
- BFS
- 인접행렬
- 입출력장치
- javascript
- 배열
- 스텍
- 인접리스트
- 동적프로그래밍
- C
- 소프트웨어
- 퀵정렬
- 교착상태
- 운영체제
- client side rendering
- 구조체
- server side rendering
- Java
- 최단경로
- 알고리즘
- 자료구조
- Stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |