티스토리 뷰
설탕배달문제! 처음에 보고 풀때는 생각보다 쉬운데?! 하고 제출했더니 1초만에 틀렸습니다가 뜬 문제...^^
안나눠지면 그냥 주머니가 안채워져도 +1을 더하면 되는 줄 알았는데 그렇게 쉬울리가 없지.ㅎㅎ
생각보다 생각해야할 조건들이 많았던 문제였다.
처음에 풀었던 코드는
package boj_basic.step7;
import java.util.Scanner;
public class Q2839 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
if(N/5==0)
System.out.println(-1);
else if((N%5)%3==0)
System.out.println(N/5+(N%5)/3);
else if((N%5)%3>0) {
if(N%3==0)
System.out.println(N/3);
else
System.out.println(-1);
}
}
}
이랬다. 근데 11을 입력하면 3이 나오지 않고 -1이 자꾸 나와서 아니 5봉지 하나, 3봉지 두개로 되는데 왜 자꾸 -1이 출력되는 거야! 했는데 알고보니 내가 5로 먼저 나누고 나머지를 구해서 그런거였다.. 그거 알고 갑자기 코드를 뒤집어 엎어야 하구나라는 멘붕에 빠졌다..
import java.util.Scanner;
public class Q2839_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int x = 0;
while(true) {
if(n%5==0) {
System.out.println(n/5+x);
break;
}
else if(n<=0) {
System.out.println(-1);
break;
}
n-=3;
x++;
}
}
}
다른 분의 코드https://blog.naver.com/vnemftnsska2/221490459362를 참고하여 작성하였는데 이렇게 짧고 간결하게 코드를 짤 수 있다는 게 대단하다고 느껴졌다.
5로 나눈 나머지가 0이 아니면 (5킬로그램 봉지에만 담아갈 수 없다면) 계속 -3씩 빼고, 그때마다 3킬로 봉지를 하나씩 추가해준다. 이 과정을 무한반복문에서 break가 걸릴때까지 계속 진행해주면 된다.
문제의 풀이방법 틀을 어떻게 짜느냐에 따라 코드의 길이가 천차만별이 될 수 있구나를 느낀 문제였다.
'알고리즘' 카테고리의 다른 글
백준 #2738 java 2023.01.22 (0) | 2023.01.22 |
---|---|
백준 #10757 java 2023.01.20 (0) | 2023.01.20 |
백준 #1193 java 2023.01.18 (0) | 2023.01.18 |
백준 #2775 java 2023.01.18 (2) | 2023.01.18 |
백준 #1712 java 2023.01.17 (0) | 2023.01.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 준영속
- SQL
- 인텔리제이
- DP
- 자바
- 웹 MVC
- 로깅
- 백준 파이썬
- 스프링 북마크
- 로그아웃
- 회원탈퇴
- 지연로딩
- 영속
- 웹MVC
- 자바 스프링
- EnumType.ORDINAL
- 스프링부트
- 비영속
- 스프링
- 파이썬
- elasticsearch
- 다이나믹 프로그래밍
- 프론트엔드
- SQL 레벨업
- JPA
- 북마크
- 스프링 커뮤니티
- 백준
- 커뮤니티
- SQLD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함