목록코딩테스트 (88)
100세까지 코딩
문제 설명 풀기 전 생각 일단 어디까지 반복을 해야 하는지 너무 헷갈렸다. 평소 반복문처럼 증가수를 arrLen까지 반복을 돌리기로 결정 증가수가 배열보다 작으면 같아질 때까지 stack에 넣고 같으면 빼고 arrIndex++ 증가수가 배열 수 보다 작으면 pop만 하고 arrIndex++ 대신, pop이 배열 숫자보다 크면 불가능하므로 NO출력 import java.util.Scanner; import java.util.Stack; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int arrLen = sc.nextInt(); int[] arr = new int[arrLen]; S..
문제 설명 풀기 전 생각 배열에 입력받은 String 저장 시작 index를 설정하여 배열길이까지 반복 시작 index가 'A', 'C', 'G', 'T'에 해당하면 그 값++ 부분문자열 길이만큼 돌았으면 중간 점검으로 만족하는지 확인 시작 index를 다시 앞으로 당기고 다른 변수는 다 0으로 초기화해서 하나씩 확인 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args)throws Exception { BufferedReader bf = new BufferedReader(new ..
문제 설명 풀기 전 생각 시간을 줄이기 위해 그전에 배운 BufferedReader 사용 입력 받은 것을 잘라서 배열에 저장후 오름차순 정리 투 포인터를 배열 처음(start_index)과 끝(end_index)에 두기 (arr[start] + arr[end] M)이면 end-- (arr[start] + arr[end] == M)이면 start++ 과 end-- 동시에 하고 cnt++ import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Bae..
문제 설명 풀기 전 생각 자연수 1부터 시작이니 start와 end라는 투 포인터를 1로 지정 end가 N이 되면 자기 자신도 합으로 나타나지므로 N+1까지 반복 (sum > N)이면 start 빼고, (sum < N)이면 end 더하고 포인터 옮기기 (sum == N)이면 cnt++; sum에서 start 빼고 start 포인터 옮기기 import java.util.Scanner; public class Baek2018 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int sum = 0; int start = 1; int end = 1; int cnt = 0; whil..
문제 설명 풀기 전 생각 배운 대로 구간 합 공식을 사용 인덱스는 0부터 시작하지만 구간은 1부터 시작하므로 [N+1] 배열 선언 구간 합 배열은 S [1]부터 채워 나가기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Baek11659 { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer..
문제 설명 풀기 전 생각 배열 생성 후 하나씩 저장 Arrays.sort를 사용하여 정렬 후 최대값(M)찾기 배열을 순회하며 총합 구하기 계산식을 묶어 (총합 * 100 / M / N) 으로 평균 구하기 import java.util.Arrays; import java.util.Scanner; public class Baek1546 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] arr = new int[N]; int sum = 0; for(int j = 0; j < arr.length; j++){ arr[j] = sc.nextInt(); } Arrays.sor..