일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 등수구하기
- 알고리즘
- ArrayList
- 임시반장 정하기
- Two Pointer
- 자바
- 백준
- 인프런
- 격자판
- 투 포인터
- 공통원소 구하기
- 배열
- array
- 가장 짧은 문자거리
- 두 배열 합치기
- 10991
- 10992
- 뒤집은 소수
- 점수계산
- 큰 수 출력하기
- java
- 모든행과열대각선의합
- 코테준비
- 보이는 학생
- 연속부분수열
- 최대 길이
- 아스키코드
- Pointer
- 누적 계산
- GitHub #Commit #BaekJoon
- Today
- Total
목록[Java] 인프런 문제풀이 (78)
ezhoon
📖 문제 첫 번째 줄부터 각 줄에 하나씩 부분집합을 아래 출력예제와 같은 순서로 출력한다. 자연수 N이 주어지면 1 ~ N까지의 원소를 갖는 집합의 부분집합을 모두 출력하시오 ⚠️ 주의사항 공집합은 출력하지 않는다. ✍️ 이해 /** * 1. DFS를 이용해서 풀기 위해 숫자가 주어지면 사용하는 것인지 아닌 것인지 판단 * 2. 임시배열 temp로 주어진 숫자가 사용하면 1 아니면 0으로 초기화 * 3. L == N + 1 * +1 인 이유는 3을 입력받았다고 했을 때 4번째까지 가서 확인해야 하기 때문 * 3-1. answer 초기화 * 3-2. 1 ~ N 까지 temp[i] == 1 즉 사용하는 칸이면 answeer += i * 3-3. 공집합은 출력하지 않으므로 length() > 0 일때면 sou..
📖 문제 이진트리를 전위순회 후위순회 중위순회로 연습해보시오 전위순회 출력 : 1 2 4 5 3 6 7 중위순회 출력 : 4 2 5 1 6 3 7 후위순회 출력 : 4 5 2 6 7 3 1 ⚠️ 주의사항 전위 후위 중위 셋 다 이해하고 출력해 볼 것 ✍️ 이해 /** * 1. lt, rt, data 로 이루어진 Node 생성 * 2. root 값이 null 이면 종료 * 3. DFS의 root.lt 호출 * 4. DFS의 root.rt 호출 * 5. 3~4 사이에 어디에 sout 해야 전위 중위 후위가 되는지 확인 * * TODO * 1. 직접 그려가며 복습하기 */ ✏️ 풀이 class Node{ int data; Node lt, rt; // 객체 주소 저장 public Node(int val) { d..
📖 문제 첫 줄에 피포나치 수열을 출력 피포나치 수열을 출력한다. 피보나치 수열이란 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다. 입력은 피보나치 수열의 총 항의 수이다. 만약 7이 입력되면 1 1 2 3 5 8 13을 출력한다. ⚠️ 주의사항 재귀함수를 이용 할 것 메모이제이션 기법을 활용해 볼 것 ✍️ 이해 /** * 1. N 입력 * 2. DFS에 N값 넘김 * 3. 1이나 2일때는 1 값 리턴 * 4. 그 외에는 N-2 + N-1 즉 N의 왼쪽 값 2개 더하기 * 4-1. 위에 내용으로 끝내도 코드는 돌아가지만 숫자가 커질 수록 너무 많은 양의 수를 재귀 * 4-2. N 번째 값이 이미 0보다 크다면 더 이상 볼 필요 없이 N 번째 값 리턴 * 5. 스택프레임 구조이므로 이전에 풀었던 fo..
📖 문제 첫 번째 줄에 N팩토리얼 값을 출력 첫 번째 줄에 자연수 N이 주어진다. ⚠️ 주의사항 DFS를 이용한 문제풀이 ✍️ 이해 /** * 1. N 입력 * 2. N이 1로 입력된 경우는 return 1 * 3. 1이 아닌경우 return N * DFS(N-1); * 3-1 N이 5라고 가정 * 3-2. 5 * D(4) * 3-3. 5 * 4 * D(3) * 3-4. 5 * 4 * 3 * D(2) * 3-5. 5 * 4 * 3 * 2 * D(1) * 3-6. 5 * 4 * 3 * 2 * 1 */ ✏️ 풀이 import java.util.Scanner; public class Main { public int DFS(int N) { if (N == 1) return 1; else return N * DF..
📖 문제 첫 번째 줄에 이진수를 출력하시오 ⚠️ 주의사항 DFS 이용 할 것 ✍️ 이해 /** * 1. DFS로 문제 풀어보기 * 2. N == 0 일때 return * 3. DFS(N/2) * 4. N % 2 출력 * DFS 호출 후 sout으로 출력하는 방법으로 해야 함 */ ✏️ 풀이 import java.util.Scanner; public class Main { public void DFS(int N) { if (N == 0) return; else{ DFS(N / 2); System.out.print(N % 2); } } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in)..
📖 문제 첫 줄에 자연수 N(3
📖 문제 첫째 줄에 자연수 N(1≤N≤1,000), M(1≤M≤N)이 주어진다. 다음 줄에는 조영필이 라이브에서 부른 순서대로 부른 곡의 길이가 분 단위로(자연수) 주어진다. 지니 레코드에서는 불세출의 가수 조영필의 라이브 동영상을 DVD로 만들어 판매하려 한다. 순서가 바뀌는 것을 우리의 가수 조영필 씨가 매우 싫어한다. 즉, 1번 노래와 5번 노래를 같은 DVD에 녹화하기 위해서는 지니 레코드 입장에서는 이 DVD가 팔릴 것인지 확신할 수 없기 때문에 이 사업에 낭비되는 DVD를 가급적 줄이려고 한다. 그리고 M개의 DVD는 모두 같은 크기여야 제조원가가 적게 들기 때문에 꼭 같은 크기로 해야 한다. 고민 끝에 지니레코드는 M개의 DVD에 모든 동영상을 녹화하기로 하였다. 이때 DVD의 크기(녹화 가..
📖 문제 ⚠️ 주의사항 이분검색 / 순차검색 두 개 사용해서 풀 것 오름차순으로 정렬 후 찾기 ✍️ 이해 /** 이분검색 * 1. N과 M 입력 후 N개의 배열 입력 * 2. 배열 정렬 * 3. 이분검색이므로 lt = 0 rt = N - 1 지정 * 4. while(lt 배열은 0부터 시작이므로 + 1 * 4-3. if 배열의 중간값이 M보다 크다면 rt를 mid - 1 방향으로 이동 * 4-4. else lt를 mid + 1 * 5. return answer */ /** 순차검색 * 1. N과 M 입력 후 N개의 배열 입력 * 2. 배열 정렬 * 3. 이분검색이므로 lt = 0 rt = N - 1 지정 * 4. for each 구문으로 arr의 값이 M과 같아질 때 까지 반복 * 4-1. 같으면 bre..
📖 문제 첫째 줄에 좌표의 개수인 N(3
📖 문제 첫 번째 줄에 자연수 N(5 sb.append(i+1).append(" "); * 4. return sb.toString() */ ✏️ 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public String solution(int N, int[] arr, int[] temp) { StringBuilder sb = new StringBuilder(); // int[] temp = arr.clone(); // -> int[] temp =..