이 문제는 입력에 4<n<1000 범위 안에 있는 4의 배수가 입력으로 들어옵니다. 또한 출력은 다음 사진과 같이 입력의 수를 4로 나누었을때 나오는 몫만큼 long을 출력하고 마지막에 int를 붙여야합니다.
그럼 우선 입력을 받기전 어떤 식으로 문제를 풀어야할지 생각해보아야합니다.
첫 번째로 입력된 값을 저장하는 변수가 있어야합니다.
두 번째로 for문의 작동 횟수를 조절해주는 값을 구해서 변수로 이용하면 편리할 것입니다.
세 번째로 출력할 값을 저장하는 문자열 변수가 존재해야합니다.
네 번째로 long이라는 값이 반복되기 때문에 for문을 이용하여 변수에 반복적으로 값을 삽입합니다.
순서대로 한번 작문해보겠습니다.
첫 번째로 입력값을 받고 그 값을 변수에 저장하겠습니다.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// 값을 받는 객체
int n = sc.nextInt();//바이트의 값이 들어온다;
}
스캐너 객체를 통해 몇 바이트를 계산할 것인지 정수형 데이터로 입력을 받고, 그 값을 정수형 변수에 저장해놓습니다.
두 번째로 입력한 값을 4로 나누어 long 을 몇번 출력해야 하는지 숫자를 계산하여 변수에 저장합니다. 이 변수는 후에 반복(for)문에서 사용 될 것입니다.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// 값을 받는 객체
int n = sc.nextInt();//바이트의 값이 들어온다;
int num = n / 4;// long을 찍어야하는 횟수를 계산하여 저장한다.
}
int num을 통해 n에 값이 20이 들어온다면 5가 들어올 것입니다. 그럼 이 변수를 for문에 삽입하여 for문이 5번 작동하도록 할 수 있을 것입니다.
세 번째로 출력해야하는 문자열 값을 저장하는 변수를 만들어줍니다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// 값을 받는 객체
int n = sc.nextInt();//바이트의 값이 들어온다;
int num = n / 4;// long을 찍어야하는 횟수를 계산하여 저장한다.
String word = ""; // 문장을 저장하는 변수를 가진다.
}
String word를 선언하고 우선 공백을 값으로 지정해줍니다. 이 변수가 마지막에 정답으로 출력될 것입니다.
네 번째로 for문을 통해 계산된 횟수만큼 word변수에 long을 추가합니다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// 값을 받는 객체
int n = sc.nextInt();//바이트의 값이 들어온다;
int num = n / 4;// long을 찍어야하는 횟수를 계산하여 저장한다.
String word = ""; // 문장을 저장하는 변수를 가진다.
for (int i = 0; i < num; i++) {
word += "long ";// for문을 돌면서 4비트마다 long을 하나씩 저장한다.
}
}
해당 for문을 통해 num에 저장된 수만큼 long이 word변수에 추가되어 저장될 것입니다. 이제 거의 마지막 단계입니다.
하지만 위 출력 예시를 잘 보시면 long과 long, long과 int사이엔 모두 띄어쓰기가 한칸 씩 존재합니다. 따라서 for문에서 값을 삽입할 때 long 뒤에 반드시 띄어쓰기 한칸을 넣어주셔야 요구하는 답이 나오게됩니다.
이젠 마지막으로 for문뒤에 int를 삽입하고 그 값을 출력합니다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// 값을 받는 객체
int n = sc.nextInt();//바이트의 값이 들어온다;
int num = n / 4;// long을 찍어야하는 횟수를 계산하여 저장한다.
String word = ""; // 문장을 저장하는 변수를 가진다.
for (int i = 0; i < num; i++) {
word += "long ";// for문을 돌면서 4비트마다 long을 하나씩 저장한다.
}
word += "int"; //문장의 마지막에 int를 붙인다.
System.out.println(word);//제대로 출력이 되는지 확인한다.
}
}
한번 콘솔에서 20을 찍고 long이 5번 출력되고 int가 정확하게 출력되는지 테스트해보겠습니다.
보시면 값을 20을 입력했을 때 long이 5번 출력되고, 마지막에 int가 정상적으로 출력되는 것을 알 수 있습니다.
부연설명
20의 값을 콘솔에 입력하면 변수 n에는 20이 저장되고, 변수 num에는 20을 4로 나눈 몫인 5가 저장됩니다.
그럼 for문에서 i는 0부터 num보다 작을 때까지만 실행하게 되어있기 때문에 0, 1, 2, 3, 4 총 5회가 동작되면서
문자열 변수 word에는 "long "이 총 5번 더해지고 for문의 동작이 종료됩니다. 이후 변수 word에 int가 마지막에 출력됨으로서 모든 값을 다 구한 이후 System.out.println을 통해 출력하여 답변을 제출합니다.
위 코드를 제출하여 정답을 맞춘 사진입니다.
아마 buffer를 이용하면 좀 더 빠르게 방법을 구현할 수 있다고 하는데 다음에 한번 해봐야겠습니다.
모자란 글 봐주셔서 감사합니다.
'백준' 카테고리의 다른 글
백준 2439번 - 별 찍기-2 (0) | 2023.02.02 |
---|---|
백준 11022번 A+B-8 (0) | 2023.01.03 |