✅ 문제
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Ex_0629_02 {
public static void main(String[] args) throws IOException {
//문제 7 : 다음 각 절차를 따라 작성하시오.
//// 1. res/map.txt 파일을 생성하고 다음 데이터를 복사/붙여넣으시오.
//
//00010
//01010
//00000
//// 2. map이라는 이름으로 5x3 크기의 정수를 담을 수 있는 이차원 배열과 board라는 이름의 10X6크기의 문자를 담을 수 있는 이차원 배열을 생성하시오.
//
//[ ] map = [ ];
//[ ] board = [ ];
int[][] map = new int[3][5];
char[][] board = new char[6][10];
{
FileInputStream fis = new FileInputStream("afterschool/res/map.txt");
Scanner fscan = new Scanner(fis);
for (int i = 0; i < map.length; i++) {
String str = fscan.nextLine();
for (int j = 0; j < map[i].length; j++) {
String[] tokens = str.split("");
map[i][j] = Integer.parseInt(tokens[j]);
}
}
}
System.out.println("map 데이터 로드 완료");
//// 3. res/map.txt에서 읽은 데이터로 map 배열을 채우시오.
//
//{
// // 코드를 작성하는 공간
//
// System.out.println(“map 데이터 로드 완료”);
//}
//// 4. map 데이터 하나는 board 배열의 4칸과 대응되며 다음과 같은 모양으로 대응된다.
//// map에서 0은 다음 모양과 같다.
//// ┌ ┐
//// └ ┘
//// map에서 1은 다음 모양과 같다.
//// ▩▩
//// ▩▩
//// map에서 읽은 데이터를 이용해서 board 배열을 채우시오. 다음은 board 배열에 채워진
//// 모습니다.
//// ┌ ┐┌ ┐┌ ┐▩▩┌ ┐
//// └ ┘└ ┘└ ┘▩▩└ ┘
//// ┌ ┐▩▩┌ ┐▩▩┌ ┐
//// └ ┘▩▩└ ┘▩▩└ ┘
//// ┌ ┐┌ ┐┌ ┐┌ ┐┌ ┐
//// └ ┘└ ┘└ ┘└ ┘└ ┘
//
//{
// // 코드를 작성하는 공간
//
//
//
// System.out.println(“board 그리기 완료”);
//}
//보드 윤곽 넣기
{
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 10; j++) {
if ((i % 2 == 0))
if (j % 2 == 0)
board[i][j] = '┌';
else
board[i][j] = '┐';
else if (j % 2 == 0)
board[i][j] = '└';
else
board[i][j] = '┘';
}
System.out.println();
}
}
//이상한 네모 입력
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 5; j++) {
if (map[i][j] == 1) {
int row = i * 2;
int col = j * 2;
board[row][col] = '▩';
board[row][col + 1] = '▩';
board[row + 1][col] = '▩';
board[row + 1][col + 1] = '▩';
}
}
}
//출력
{
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 10; j++) {
System.out.printf("%c", board[i][j]);
}
System.out.println();
}
}
//// 5. board 배열을 화면에 출력하는 코드를 작성하시오.
//
//{
// // 코드를 작성하는 공간
//
//
//
// System.out.println(“board 출력 완료”);
//}
}
}
✅ 해결방법
- for문으로 좌표를 뽑아두고 규칙을 찾으면 편하다.
✅ 코드
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Ex_0629_02 {
public static void main(String[] args) throws IOException {
//문제 7 : 다음 각 절차를 따라 작성하시오.
//// 1. res/map.txt 파일을 생성하고 다음 데이터를 복사/붙여넣으시오.
//
//00010
//01010
//00000
//// 2. map이라는 이름으로 5x3 크기의 정수를 담을 수 있는 이차원 배열과 board라는 이름의 10X6크기의 문자를 담을 수 있는 이차원 배열을 생성하시오.
//
//[ ] map = [ ];
//[ ] board = [ ];
int[][] map = new int[3][5];
char[][] board = new char[6][10];
{
FileInputStream fis = new FileInputStream("afterschool/res/map.txt");
Scanner fscan = new Scanner(fis);
for (int i = 0; i < map.length; i++) {
String str = fscan.nextLine();
for (int j = 0; j < map[i].length; j++) {
String[] tokens = str.split("");
map[i][j] = Integer.parseInt(tokens[j]);
}
}
}
System.out.println("map 데이터 로드 완료");
//// 3. res/map.txt에서 읽은 데이터로 map 배열을 채우시오.
//
//{
// // 코드를 작성하는 공간
//
// System.out.println(“map 데이터 로드 완료”);
//}
//// 4. map 데이터 하나는 board 배열의 4칸과 대응되며 다음과 같은 모양으로 대응된다.
//// map에서 0은 다음 모양과 같다.
//// ┌ ┐
//// └ ┘
//// map에서 1은 다음 모양과 같다.
//// ▩▩
//// ▩▩
//// map에서 읽은 데이터를 이용해서 board 배열을 채우시오. 다음은 board 배열에 채워진
//// 모습니다.
//// ┌ ┐┌ ┐┌ ┐▩▩┌ ┐
//// └ ┘└ ┘└ ┘▩▩└ ┘
//// ┌ ┐▩▩┌ ┐▩▩┌ ┐
//// └ ┘▩▩└ ┘▩▩└ ┘
//// ┌ ┐┌ ┐┌ ┐┌ ┐┌ ┐
//// └ ┘└ ┘└ ┘└ ┘└ ┘
//
//{
// // 코드를 작성하는 공간
//
//
//
// System.out.println(“board 그리기 완료”);
//}
//보드 윤곽 넣기
{
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 10; j++) {
if ((i % 2 == 0))
if (j % 2 == 0)
board[i][j] = '┌';
else
board[i][j] = '┐';
else if (j % 2 == 0)
board[i][j] = '└';
else
board[i][j] = '┘';
}
System.out.println();
}
}
//이상한 네모 입력
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 5; j++) {
if (map[i][j] == 1) {
int row = i * 2;
int col = j * 2;
board[row][col] = '▩';
board[row][col + 1] = '▩';
board[row + 1][col] = '▩';
board[row + 1][col + 1] = '▩';
}
}
}
//출력
{
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 10; j++) {
System.out.printf("%c", board[i][j]);
}
System.out.println();
}
}
//// 5. board 배열을 화면에 출력하는 코드를 작성하시오.
//
//{
// // 코드를 작성하는 공간
//
//
//
// System.out.println(“board 출력 완료”);
//}
}
}
👍좋았던 점👍
- 연산자, 조건문과 반복문, 배열... 이전에 배운 모든 내용들이 다 들어가 있어서 복습 겸 실력을 다질 수 있어서 좋았음.
🔥어려웠던 점🔥
- 위에 있는 좌표를 (x,y) -> (0, 1) 이런식으로 해석하며 풀어야 하는데....정수 23, 45 이런식으로 생각을 해버려서 Index 규칙찾는게 어려웠다.
- 배열의 Index는 0부터 시작하는데...나도 모르게 1부터 카운트해서 규칙을 못 찾고 헤메고 있었다.
'IT > 뚝딱뚝딱' 카테고리의 다른 글
[JAVA] ✏️ 숫자 뒤집기! (1) | 2023.07.02 |
---|---|
[JAVA] ✏️ 로또 프로그램 만들기! (Top-Down) (0) | 2023.06.29 |
[JAVA] ✏️ 로또 프로그램 만들기! (Bottom-Up) (0) | 2023.06.29 |
[JAVA] ✏️ 오목 게임 프로그램을 만들어보자!(데이터 저장및 불러오기) (0) | 2023.06.26 |
[JAVA] ✏️ 오목 게임 프로그램을 만들어보자!(2차원 배열) (6) | 2023.06.25 |