문제해설
해당 문제는 규칙성을 찾아 처리하면 되는 문제이다.


이러한 수학문제들은 보통 규칙성이 존재하고 해당 규칙성들을 수식으로 표현하면 문제풀이가 수월해지는 것 같다.
위 표에서 볼 수 있듯 파란색부분은 (n을 5로 나눈 나머지가 1 또는 3) n/5 + 1개의 봉지가 필요함을 확인할 수 있고,
빨간색 부분은 (n을 5로 나눈 나머지가 2 또는 4) n/5 + 2개의 봉지가 필요한 것을 확인할 수 있었다.
그리고 4, 7의 경우에만 분류할 수가 없었다.
결과코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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());
if (N == 4 || N == 7) {
System.out.println(-1);
} else if (N % 5 == 0) {
System.out.println(N/5);
} else if (N % 5 == 1 || N % 5 == 3){
System.out.println(N/5 + 1);
} else {
System.out.println(N/5 + 2);
}
}
}
배운점

처음에 풀 때 5로 나누고 그 나머지를 3으로 나누어 풀면 되겠지 라는 간단한 생각으로 틀린 문제였다.
이제 푸는 문제들의 난이도가 약간씩 상승하면서 생각하는 시간이 늘어나게되는 것 같다. 브론즈 문제들을 풀 때 처럼 간단한 문제들이 아니기 때문에 실수하는 일이 없도록 꼼꼼하게 생각해봐야겠다.
최근에 결정트리를 공부하며 들었던 그리디 알고리즘이 코드에서 구현되는 예시를 확인할 수 있었다.
» 제가 작성한 글의 내용중 잘못된 부분 및 수정해야 할 사항이 있으면 댓글로 말씀부탁드립니다.
확인 후 다시 공부하여 수정하도록 하겠습니다. 끝까지 읽어주셔서 감사합니다 !! 😀
문제 이해를 위하여 참고하였습니다.
-> https://st-lab.tistory.com/72
'Algorithm' 카테고리의 다른 글
백준 1157번 JAVA (단어공부 알파벳 찾기) (0) | 2023.03.01 |
---|---|
백준 2675번 JAVA (문자열 반복) (0) | 2023.02.25 |
백준 8958번 JAVA (OX퀴즈) (0) | 2023.02.20 |
백준 3052번 JAVA (나머지) (0) | 2023.02.19 |
백준 5597번 JAVA (과제 안 내신 분..?) (0) | 2023.02.17 |
문제해설
해당 문제는 규칙성을 찾아 처리하면 되는 문제이다.


이러한 수학문제들은 보통 규칙성이 존재하고 해당 규칙성들을 수식으로 표현하면 문제풀이가 수월해지는 것 같다.
위 표에서 볼 수 있듯 파란색부분은 (n을 5로 나눈 나머지가 1 또는 3) n/5 + 1개의 봉지가 필요함을 확인할 수 있고,
빨간색 부분은 (n을 5로 나눈 나머지가 2 또는 4) n/5 + 2개의 봉지가 필요한 것을 확인할 수 있었다.
그리고 4, 7의 경우에만 분류할 수가 없었다.
결과코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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());
if (N == 4 || N == 7) {
System.out.println(-1);
} else if (N % 5 == 0) {
System.out.println(N/5);
} else if (N % 5 == 1 || N % 5 == 3){
System.out.println(N/5 + 1);
} else {
System.out.println(N/5 + 2);
}
}
}
배운점

처음에 풀 때 5로 나누고 그 나머지를 3으로 나누어 풀면 되겠지 라는 간단한 생각으로 틀린 문제였다.
이제 푸는 문제들의 난이도가 약간씩 상승하면서 생각하는 시간이 늘어나게되는 것 같다. 브론즈 문제들을 풀 때 처럼 간단한 문제들이 아니기 때문에 실수하는 일이 없도록 꼼꼼하게 생각해봐야겠다.
최근에 결정트리를 공부하며 들었던 그리디 알고리즘이 코드에서 구현되는 예시를 확인할 수 있었다.
» 제가 작성한 글의 내용중 잘못된 부분 및 수정해야 할 사항이 있으면 댓글로 말씀부탁드립니다.
확인 후 다시 공부하여 수정하도록 하겠습니다. 끝까지 읽어주셔서 감사합니다 !! 😀
문제 이해를 위하여 참고하였습니다.
-> https://st-lab.tistory.com/72
'Algorithm' 카테고리의 다른 글
백준 1157번 JAVA (단어공부 알파벳 찾기) (0) | 2023.03.01 |
---|---|
백준 2675번 JAVA (문자열 반복) (0) | 2023.02.25 |
백준 8958번 JAVA (OX퀴즈) (0) | 2023.02.20 |
백준 3052번 JAVA (나머지) (0) | 2023.02.19 |
백준 5597번 JAVA (과제 안 내신 분..?) (0) | 2023.02.17 |