반응형
sqld 자격증 공부를 하느라 요즘 코딩테스트 공부에 소홀했다...
❗️❗️ 틀린 코드
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int bag = 0;
if(N % 5 == 0){
bag = N / 5;
}else if(N % 5 != 0){
int a = N % 5;
if(a % 3 == 0){
bag = (N/5) + (a/3);
}else{
bag = -1;
}
}
if(N % 3 == 0){
bag = N / 3;
}else if(N % 3 != 0){
int a = N % 3;
if(a % 5 == 0){
bag = (N/3) + (a/5);
}else{
bag = -1;
}
}
System.out.println(bag);
}
}
수학적으로 접근할 자신이 없어서 일일히 비교하는 형식으로 풀려고 했었다. 내가 짠 코드는 11kg과 같은 예제를 제대로 해결하지 못했다.
여러 번 시도했으나 해결하지 못해서 결국 다른 분의 코드를 참고하여 해결했다.
https://velog.io/@gayeong39/%EB%B0%B1%EC%A4%80-2839-%EC%84%A4%ED%83%95-%EB%B0%B0%EB%8B%AC
Scanner를 이용한 방법
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int bag = 0;
while(N>0){
if(N % 5 == 0){
bag += N / 5;
break;
}else{
N -= 3;
bag++;
}
if(N<0){
bag = -1;
break;
}
}
System.out.println(bag);
sc.close();
}
}
BufferedReader를 이용한 방법
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 bag = 0;
while(N>0){
if(N % 5 == 0){
bag += N / 5;
break;
}else{
N -= 3;
bag++;
}
if(N<0){
bag = -1;
break;
}
}
System.out.println(bag);
br.close();
}
}
N의 값을 5로 나눴을 때 0이 되지 않으면 N의 값에서 3을 빼서 다시 나눠보는 식으로 하되, N의 값이 0보다 작게 되면 -1을 출력하게 하는 방식이다. 훨씬 짧은 코드 길이로 이렇게 해낼 수 있다는 것을 보고 난 아직 갈 길이 멀다고 느꼈다...
그나저나 SQLD 붙었으면 좋겠다...ㅎ
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2587 - 대표값2 (JAVA/ 자바) (0) | 2024.05.30 |
---|---|
[백준] 2750 - 수 정렬하기 (JAVA/ 자바) (0) | 2024.05.29 |
[백준] 1436 - 영화감독 숌 (JAVA/ 자바) (0) | 2024.05.14 |
[백준] 19532 - 수학은 비대면강의입니다. (JAVA/ 자바) (0) | 2024.05.05 |
[백준] 2231 - 분해합 (JAVA/ 자바) (0) | 2024.05.01 |