1092번: 배
첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보
www.acmicpc.net
문제에 있는 예제는 다 맞게 나오는데 틀렸습니다가 나와서 이제 질문게시판 보러 가야해요 ㅠ ㅠ
package baekjoon;
import java.util.*;
import java.io.*;
public class b1092 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
Integer crane[] = new Integer[n];
for(int i = 0 ; i < n ; i++)
crane[i] = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
Integer box[] = new Integer[m];
for(int i = 0 ; i < m ; i++)
box[i] = Integer.parseInt(st.nextToken());
Arrays.sort(crane, Comparator.reverseOrder());
Arrays.sort(box, Comparator.reverseOrder());
int cnt = 0;
int idx = 0;
for(int i = 0 ; i < m ; i++)
{
if(box[i] > crane[idx])
{
i--;
idx--;
cnt++;
}
else
{
idx++;
}
if(i < 0 || idx < 0)
{
cnt = -1;
break;
}
else if(idx % n == 0)
{
cnt++;
idx = 0;
}
if(i == m-1 && box[i] <= crane[idx])
cnt++;
}
bw.write(cnt+"");
bw.close();
}
}
근데 그도 그럴게 넘...if문으로 엄 상황별로 다 따져서 지저분한 느낌이긴 해요
3
10 6 5
11
6 8 9 6 8 6 9 6 8 6 9
이거 6나와야하는데 14 나오네용 레죵두..
for말고 while로 해서 위랑 비슷하게 하다가 예제별로 1 쁠마돼서 계속 어긋나길래 구냥 구글링했슴니당..
package baekjoon;
import java.util.*;
import java.io.*;
public class b1092 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
Integer crane[] = new Integer[n];
for(int i = 0 ; i < n ; i++)
crane[i] = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
ArrayList<Integer> box = new ArrayList<>();
for(int i = 0 ; i < m ; i++)
box.add(Integer.parseInt(st.nextToken()));
Arrays.sort(crane, Comparator.reverseOrder());
Collections.sort(box, Collections.reverseOrder());
int cnt = 0;
if(box.get(0) > crane[0])
{
bw.write(-1+"");
bw.close();
return;
}
while(!box.isEmpty())
{
int idx =0;
for(int i=0; i< n; )
{
if(idx == box.size())
break;
else if(crane[i] >= box.get(idx))
{
box.remove(idx);
i++;
}
else idx++;
}
cnt++;
}
bw.write(cnt+"");
bw.close();
}
}
코드 완죤 예술이네요...
제가 하고 싶은 느낌 딱 완전 제대로에요
본받고 열심히 하겠슴니다
[백준] 1092번 배 (자바 풀이) (tistory.com)
[백준] 1092번 배 (자바 풀이)
문제 https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째
code-lab1.tistory.com
'BOJ' 카테고리의 다른 글
[JAVA] 백준 5107번 - 마니또 (2) | 2023.07.20 |
---|---|
[JAVA]백준 1043번 - 거짓말 (2) | 2023.07.20 |
[JAVA]백준 1068번 - 트리 (2) | 2023.07.17 |
[JAVA]백준 1956번 - 운동 (2) | 2023.07.16 |
[JAVA]백준 6198번 - 옥상 정원 꾸미 (2) | 2023.07.15 |
댓글