직사각형 별찍기
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한사항
- n과 m은 각각 1000 이하인 자연수입니다.
입출력 예시
코드
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
}
}
풀이
// Scanner 클래스를 가져옴. 사용자 입력을 처리하는 데 사용됩니다.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
// Scanner 객체 생성, System.in은 표준 입력(키보드)을 의미
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(); // 사용자로부터 첫 번째 정수를 입력받아 변수 a에 저장
int b = sc.nextInt(); // 사용자로부터 두 번째 정수를 입력받아 변수 b에 저장
String str = ""; // 별을 저장할 문자열 초기화. 이 문자열에 별을 추가하여 출력
// 바깥쪽 for 루프: b번 반복
// 각 반복은 직사각형의 한 줄을 나타냄
for(int i = 0; i < b; i++){
// 안쪽 for 루프: a번 반복
// 각 반복은 줄당 별 하나를 추가
for(int j = 0; j < a; j++){
// 별을 str 문자열에 추가
str += "*";
}
str += "\n"; // 한 줄이 끝나면 개행 문자를 추가하여 다음 줄로
}
System.out.println(str);
}
}
사용자로부터 두 정수 a, b를 입력받아 a x b 크기의 별로 이루어진 직사각형을 출력
각 줄에는 입력받은 첫 번째 수만큼의 별이 있고, 총 줄 수는 두 번째 수에 해당
배열선언에 크기 지정
배열은 고정크기만 가능
편의성을 위해서 가능하지만, 성능이 떨어짐!
스트링 빌더로 하나씩 뒤에 붙이는 방식
Scanner 클래스
자바에서 제공하는 유틸리티 클래스로, 간단한 텍스트 스캐닝 기능을 제공
주로 사용자로부터 콘솔 입력을 받거나, 파일과 같은 외부 소스로부터 데이터를 읽을 때 사용
주요 특징
- 다양한 형태의 입력 처리: Scanner 클래스는 문자열, 정수, 실수, 라인 등 다양한 형태의 데이터를 읽을 수 있음
- 정규식 지원: 입력을 파싱할 때 정규 표현식을 사용할 수 있어 유연한 입력 처리가 가능합니다.
- 사용 편의성: 간단한 메소드 호출로 다양한 유형의 입력을 쉽게 처리할 수 있습니다.
사용 방법
- 클래스 임포트
- Scanner 클래스를 사용하기 위해서는 java.util 패키지를 임포트해야 함
- Scanner 객체 생성
- Scanner 객체는 입력 소스를 기반으로 생성
- ex) 표준 입력(키보드)에서 데이터를 읽음
- 데이터 읽기
- Scanner 객체를 사용하여 다양한 형태의 데이터를 읽음
- ex) nextInt(), nextLine(), nextDouble() 등의 메소드를 사용하여 정수, 문자열, 실수 등을 읽음
- Scanner 객체 닫기
- Scanner 객체를 더 이상 사용하지 않을 때는 close() 메소드를 호출하여 리소스를 해제
- 특히 파일이나 네트워크 연결과 같은 외부 리소스를 사용할 때 중요
str += "\n"; 코드의 역할
- 새로운 줄로 이동
- str 문자열에 개행 문자 "\n"를 추가함으로써, 출력할 때 다음 내용이 새로운 줄에 시작 됨
- 이것이 없으면 모든 출력이 하나의 긴 줄로 이어져서 나타남
- 가독성 향상
str += "\n";을 사용하지 않는다면, 별들이 모두 한 줄로 이어져서 출력 !
https://school.programmers.co.kr/learn/courses/30/lessons/12969