-
[백준/BOJ] 3004번 : 체스판 조각 (JAVA / 자바)백준 2022. 1. 24. 14:55
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/3004
- 문제 -
난이도 브론즈 4 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
체스판을 자를때마다 패턴이 있는데
1번 자르면 2개가 되고
2번 자르면 4개가 되고 1번에서 2번으로 늘어나면 조각은 2개가 늘어난다
3번 - 6개 2개가 늘어난다
4번 - 9개 3개가 늘어난다
5번 - 12개 3개가 늘어난다
6번 - 16개 4개가 늘어난다
이렇듯 패턴을 가지고 증가한다.
패턴은 보면 자르는 횟수가 늘어날때마다 조각의 증가량이 2번 같고 그 다은 하나 증가 다시 2번 같다.
그리고 보면 3번 자를때 2개가 늘어나고 4번 자를땐 3개가 늘어난다. 다른 숫자들도 보면 알겟지만
이걸로 또 파악할 수 있는 패턴은 각 자르는 횟수를 2로 나눠서 1을 더하면 그게 바로 조각의 증가량이다.
그래서 이 패턴을 이용해 코드를 짜 볼 것이다.
for문을 이용해 N번 만큼 자르고, 자를 때마다 각 자를때의 번호를 2로 나누고 1을 더해서 총 조각 수에 더 할 것이다.
자세한건 코드로 확인해 보자.(코드로 두가지 방법을 보여줄 것이다. 크게 다른건 아니고 if문을 추가해서 쓰는것과 없이 쓰는 것이다.)
-풀이-
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 sum = 0; //보통 for문에서 i는 0부터 시작하지만 여기선 좀 더 직관적으로 보고 //연산하기 편하게 1부터 시작한다(1부터 하므로써 i는 자를때마다 자르는 번호가 된다) for(int i = 1; i <= N; i++) { //첫번째 자를때는 2로 나누고 1을 더하면 1이 되어버리기 때문에 if문으로 제한해준다. if(i == 1) { sum += 2; }else { sum += ((i / 2) + 1); } } System.out.println(sum); } }
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()); //자르는 횟수가 1일때 어짜피 다른 횟수와 다르게 단순하게 2를 더해주기 때문에 //애초에 합 변수에 2를 포합시켜준다. int sum = 2; //1번일때는 합산에 이미 추가했기 때문에 i는 2부터 시작한다. for(int i = 2; i <= N; i++) { sum += ((i / 2) + 1); } System.out.println(sum); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 5532번 : 방학 숙제 (JAVA / 자바) (0) 2022.01.24 [백준/BOJ] 4299번 : AFC 윔블던 (JAVA / 자바) (1) 2022.01.24 [백준/BOJ] 2753번 : 윤년 (JAVA / 자바) (0) 2022.01.24 [백준/BOJ] 2752번 : 세수정렬 (JAVA / 자바) (0) 2022.01.23 [백준/BOJ] 2588번 : 곱셈 (JAVA / 자바) (0) 2022.01.23