본문 바로가기

반응형

Java/Java 알고리즘 인프런

(110)
[Ch.01 - String] 01. 문자 찾기 (+ toCharArray) 1. 문자 찾기 설명 한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요. 대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다. 입력 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다. 문자열은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 해당 문자의 개수를 출력한다. 예시 입력 1 Computercooler c 예시 출력 1 2 package string.ch01; import java.util.Scanner; public class String01_1 { public static void main(String[] args){ Scanner kb=new Scanner(System.in); i..
[Ch.03 - 투 포인터] 6. 최대 길이 연속부분수열 ### 6. 최대 길이 연속 부분수열 0과 1로 구성된 길이가 N인 수열에서, 최대 k번 변경가능한데, 0을 1로 변경가능 최대 k번의 변경을 통해 1로만 구성된 최대 길이의 연속부분수열 출력 입력값 14, 2 1 1 0 0 1 1 0 1 1 0 1 1 0 1 출력값 8 1. answer와 sum -> 구간별 연속부분수열 개수를 sum에 저장해 answer와 비교 2. 포인터 1 p1, 포인터2 p2, p2의 개수 p2_n 3. 1로 바꾼 마지막 위치 zero, 현재 세고 있는 위치 count 4. arr2는 arr배열을 복사한 배열로, 매번 리셋 5. while (p2 < n && p2_n < k) if (arr[p2] == 0) 0인 값 1로 바꾸고 if(p2_n==1) 처음 1로 바꾼 위치 기억 else ..
[Ch.03 - 투 포인터] 5. 연속된 자연수의 합 # (+ for-while) 5. 연속된 자연수의 합 양의 정수 N을 2개 이상의 연속된 자연수 합으로 표현하는 가짓수 출력 입력값 15 출력값 3 package twopointer.ch03; import java.util.Scanner; //연속된 자연수의 합 //자연수 N을 2개 이상의 연속된 자연수 합으로 만드는 가지수 M출력 public class Twopointer05 { public int solution(int n) { int answer=0; int p1=1; int p2=2; int sum=0; while(p10) { cnt++; n=n-cnt; if(n%cnt==0) answer++; //원하는 값이 0보다크면 카운트를 하나씩 늘리면서 //카운트를 나눴을때 나머지가 0인경우 결과에 +1한다. //5인경우 n은 4가..
[Ch.03 - 투 포인터] 4. 연속 부분수열 ## 4. 연속 부분수열 연속 부분수열 N개에서 합이 자연수 M이 되는 경우 횟수 구하기 입력값 8 6 1 2 1 3 1 1 1 2 출력값 3 (1) 1. while (p1 m) { // 합계가 m보다 크면 반복 sum -= arr[lt++]; // 합계에서 포인터1의 값을 빼고, 포인터1 +1 if (sum == m) answer++; // 원하는 값이 되면, 결과에 +1 } } return answer; } } 더보기 package twopointer.ch03; impo..
[Ch.03 - 투 포인터] 3. 최대 매출 (+ 슬라이딩 윈도우) 3.최대 매출 N일 동안 매출기록 중 연속 k일 동안 최대 매출액 구하기 입력값 10 3 12 15 11 20 25 10 20 19 13 15 출력값 56 package twopointer.ch03; import java.util.Scanner; //최대 매출 //총 n일 중, 연속 k일간의 최대 매출 class Twopointer03_1 { public int solution(int n, int k, int[] arr) { int sum = 0; int tmp = 0; int p1 = 0; int p2 = 1; while (p1 < n) { tmp = 0; p2 = p1 + 1; tmp = arr[p1]; while (p2 - p1 < k &&p2 < n) { tmp += arr[p2++]; if (p..
[Ch.03 - 투 포인터] 2. 공통원소 구하기 (+하나씩 확인하는 방법) 2.공통원소 구하기 두 개의 집합에서 공통 원소를 추출하여 오름차순으로 출력 입력값 5 1 3 9 5 2 5 3 2 5 7 8 출력값 2 3 5 import java.util.*; public class Main { public ArrayList solution(int[] arr1, int[] arr2){ ArrayList list = new ArrayList(); for(int i=0;i

반응형