본문 바로가기

공부/예제 풀이

개인 과제 01.(수정)

문제 출처 : 프로그래머스

 

문제 설명.

문자열 str과 정수 n이 주어집니다.
str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.

 

제한사항
1<=str의 길이<=10
1<=n<=5

 

import java.util.Scanner;

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) {
        String str;
        int n = 0;
        System.out.println("정수값을 1부터 5까지 입력해주세요.");
        Scanner scnInt = new Scanner(System.in);
        n = scnInt.nextInt();

        while (n <= 1 || n >= 6) {
            System.out.println("정수값을 제대로 다시 입력 해주세요.");
            n = scnInt.nextInt();
        }

        Scanner scnStr = new Scanner(System.in);
        System.out.print("문자열을 10자 내로 적어주세요.");
        str = scnStr.nextLine();
        if (str.length() >= 1 && str.length() <= 10) {
            for (int i=0;i<n; i++) {
                System.out.print(str);
            }
        }else {
            System.out.print("문자열을 잘못 입력하셨습니다.문자열을 10자 내로 적어주세요.");
        }

    }
}

위에 정수n을 입력받을 때 1~5까지 제대로된 값을 입력하지 않을 때 while문을 이용하여 제대로된 값을 입력할 때까지 무한반복 시키는 방식으로 코드를 짰다.

이와 마찬가지로 문자열 str의 길이가 1~10까지 값을 제대로 넣을 때까지 코드를 짜려고 했으나 이상하게 작동이 잘 되지 않아 이대로 마무리.

오늘은 마치고 내일이나 모레안에 str입력부도 다시 코딩 해봐야겠다.

 

수정)

진짜 바보같다 좀만더 생각하면 바로 풀리는걸 미룰려다가 그냥 끝내고 자자하고 다시봤더니 바로 풀려버렸다.

import java.util.Scanner;

// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {
    public static void main(String[] args) {
        String str;
        int n = 0;
        System.out.println("정수값을 1부터 5까지 입력해주세요."); //문제 제한사항 안내 메세지
        Scanner scnInt = new Scanner(System.in);
        n = scnInt.nextInt(); // n값 입력

        while (n < 1 || n >= 6) { // 입력값이 음수 혹은 0, 6이상의 값들은 제한사항에 걸리니 걸러주는 반복문
            System.out.println("정수값을 제대로 다시 입력 해주세요.");
            n = scnInt.nextInt(); // 조건에 맞지 안았을 경우 다시 n값을 입력받음 이때 while을통해 제대로된 값을 받을 때까지 무한 반복.
        }

        System.out.print("문자열을 10자 내로 적어주세요."); //문제 제한사항 안내 메시지
        Scanner scnStr = new Scanner(System.in);
        str = scnStr.nextLine(); // str값 입력

        while (str.length() <= 1 || str.length() >= 10) {// 입력받은 문자열의 길이가 0혹은 10이상의 값들은 제한사항에 걸리니 걸러주는 반복문
            System.out.print("문자열을 잘못 입력하셨습니다.문자열을 10자 내로 적어주세요.");
            str = scnStr.nextLine(); // 잘못 입력된 문자열을 다시 받기 위해.
            }
        for (int i = 0; i<n; i++) {
            System.out.print(str);

        }
    }
}

while 조건문이 한번에 눈에 들어오지 않는것 같다. 더 직관적인 방식이 없을까 생각해보자.

 

'공부 > 예제 풀이' 카테고리의 다른 글

백준 1427번(실패)  (0) 2023.10.18
백준 10814번 (실패)  (0) 2023.10.18
계산기 프로그래밍  (0) 2023.10.17
2주차 숙제  (0) 2023.10.14
1주차 숙제.  (1) 2023.10.12