728x90
백준에 신기한 문제가 많다는 건 알고 있었는데 냅다 이름이 주몽으로 되어있어서 좀 웃겼던 문제
주몽님 보고계신가요 21세기엔 철기군을 양성하기 위해서 코딩을 합니다
✍️풀이방식
1. 재료의 개수 , 갑옷만드는 데 필요한 수 정의 후 입력받기
2. N개의 재료들이 가진 고유한 번호들이 공백을 사이에 두고 주어짐
3. 받은 재료를 정렬해서 풀기 (후에 투 포인터 사용)
투 포인터 이동 원칙
A[i] + A[j] > M; j--; // 번호의 합이 M보다 크기 때문에 큰 번호 index 감소
A[i] + A[j] > M; j--; // 번호의 합이 M보다 작으므로 작은 번호 index 증가
A[i] + A[j] > M; j--; // 양쪽 포인터를 모두 이동시키면 count 증가
🖥️문제풀이
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));
int N= Integer.parseInt(br.readLine());
int M= Integer.parseInt(br.readLine());
int[] S =new int[N];
StringTokenizer st =new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
S[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(S); // 정렬 알고리즘 사용
int count =0;
int i=0; //A[0]
int j=N-1; //A[N-1]
while(i<j){
if(S[i]+S[j]<M)i++;
else if(S[i]+S[j]>M)j--;
else{
i++;
j--;
count++;
}
}
System.out.println(count);
}
}
☑️실행결과
728x90
'✍️ Algortihm > Java' 카테고리의 다른 글
[백준] 2743 단어 길이 재기 - JAVA (1) | 2024.11.23 |
---|---|
[백준] 9086 문자열 - JAVA (1) | 2024.11.20 |
[백준] 2018번: 연속된 자연수의 합 구하기 - JAVA (1) | 2024.11.11 |
[백준] 11659번: 구간 합 구하기 4 - JAVA (0) | 2024.11.10 |
자바 코딩 테스트 정리 (1) (0) | 2024.08.28 |