-
[백준/BOJ] 1094번 : 막대기 (JAVA / 자바)백준 2022. 2. 20. 16:44
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/1094
1094번: 막대기
지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대
www.acmicpc.net
- 문제 -
난이도 실버 5 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
(JAVA / 자바) Scanner 와 Bufferedreader
안녕하세요~ 코딩하는 코알못 코메인입니다. 이번엔 백준 문제 풀면서 계속 언급될 scanner와 bufferedreader에 대한 간단한 정리를 해볼거다. 자바에서 입력은 scanner와 bufferedreader가 있다. 우선 각자
comain.tistory.com
풀이 방법
64길이의 막대기로 만들수 있는 막대 조각은 {64, 32, 16, 8, 4, 2, 1}이다. 이 막대들로 원하는 막대를 만들면 된다.
배열에 저 값들을 다 넣고, 64부터 1까지 원하는 막대기 길이가 될때까지 더하고 빼준다.
내가 원하는 값이 23이면 23 밑부터 보면 된다. 16을 더해서 23 밑이면 다음 값을 더해준다. 16+ 8 = 24. 24는 원하는 길이보다 길다. 그렇다면 다시 8을 빼주고, 다음 값을 더한다. 24 - 8 + 4 = 20이다. 원하는 값보다 짧다. 다음 값을 더한다. 20 + 2 = 22. 아직도 짧다 다음 값을 더한다. 22 + 1 = 23. 같아졌다. 그렇다면 여기까지 쓰인 막대기 개수를 구한다. 더했다 뺀거는 세지 않고 쓰인것만 세주면 4가 된다. 개수를 출력해주자.
코드를 보자.
-풀이-
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 X = Integer.parseInt(br.readLine()); int count = 0; //막대기 int[] arr = {64, 32, 16, 8, 4, 2, 1}; int sum = 0; //막대기는 총 7개이니 7번 반복하는 반복문 for(int i = 0; i < 7; i++) { //원하는 값보다 작은 값들로만 연산한다. if(arr[i] <= X) { sum += arr[i]; count++; } //더했는데 원하는 값보다 길면 빼준다. 뺐기때문에 개수에서도 빼준다. if(sum > X) { sum -= arr[i]; count--; } //같아지면 반복문을 종료하고 개수를 출력한다. if(sum == X) break; } System.out.println(count); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 1181번 : 단어 정렬 (JAVA / 자바) (2) 2022.02.20 [백준/BOJ] 1158번 : 요세푸스 문제 (JAVA / 자바) (0) 2022.02.20 [백준/BOJ] 1524번 : 세준세비 (JAVA / 자바) (0) 2022.02.20 [백준/BOJ] 1418번 : K-세준수 (JAVA / 자바) (0) 2022.02.20 [백준/BOJ] 1402번 : 아무래도이문제는A번난이도인것같다(JAVA / 자바) (0) 2022.02.19