티스토리 뷰

노트

언어별 2차원 배열 입력

tose33 2021. 12. 5. 11:15

다음과 같이 2차원 배열의 행, 열의 크기가 주어지고 

입력될 2차원 배열이 주어진다면?

 

3 3

abc

def

ghi

 

 

c++

char d[10][10];
int h, w;
cin >> h >> w;
for(int r = 0; r < h; r++) scanf("%s", d[r]);

c++은 이런식으로 c의 입력인 scanf를 이용해 문자열을 입력 받는것처럼 각 행에 입력하면 각 열에 한글자씩 들어간다.

 

python

d = ['' for _ in range(10)]

h, w = map(int, input().split())
for r in range(h): d[r] = input()

파이썬도 비슷하게 string형 리스트를 생성하고

각 행에 입력받으면 된다.

 

d = [list(map(str, input().split())) for _ in range(3)]

요렇게도 가능 

JAVA

import java.nio.charset.StandardCharsets;
import java.util.*;

public class Main
{
    static String[] d = new String[10];
    static int w, h;   

    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        h = sc.nextInt(); w = sc.nextInt();
	
    	for(int r = 0; r < h; r++) d[r] = sc.next();
        
        // 출력 
        for(int r = 0; r < h; r++)
                System.out.println(d[r]);
    }

}

자바도 비슷하게 String형 배열을 만들어서 행별로 입력받아도 된다.

하지만 이 경우 자바의 String은 불변의 특징을 갖기때문에 나중에 문자열의 일부분을 수정해야 한다면 불편할수 있다.

// String d[0]의 0번째 인덱스의 문자 수정 
char[] charArray = d[0].toCharArray();
charArray[0] = 'D';
d[0] = String.valueOf(charArray);

물론 이런식으로 char형 배열로 바꿔서 수정하고 다시 문자열로 바꿀수도 있고 StringBuilder를 써서 바꿀수도 있다.

 

 

import java.nio.charset.StandardCharsets;
import java.util.*;

public class Main
{
    static byte[][] d = new byte[10][];
    static int w, h;  

    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        h = sc.nextInt(); w = sc.nextInt();

        for(int r = 0; r < h; r++) d[r] = sc.next().getBytes();
        
        // 출력 
        for(int r = 0; r < h; r++)
                System.out.println(new String(d[r]));
    }

}

위와같이 byte type을 사용하기도 한다.

 

 

C#

using static System.Console;

namespace Project1
{
    public class Class1
    {
        static char[][] d = new char[10][];
        static int h, w;


        static void Main()
        {
            // 한줄 입력 받아서 Split으로 공백기준 나눔  
            string[] s = ReadLine().Split(' ');
            h = int.Parse(s[0]); w = int.Parse(s[1]);
            // 한줄 읽어서 배열로 변환 
            for (int r = 0; r < h; r++) d[r] = ReadLine().ToCharArray();
        }
    }
}

2차원 char배열 선언후, 

ReadLine()으로 한 줄 읽은후에 ToCharArray()로 배열로 변환 

 

Kotlin 

import java.util.*

var d = Array<String>(501) {""}
var w = 0; var h = 0

fun main()
{
    val s = Scanner(System.`in`)
    h = s.nextInt(); w = s.nextInt()
    for(r in 0 until h) d[r] = s.next()

	// 출력 
    for(r in 0 until h) println(d[r])
}

코틀린도 String타입의 어레이를 만들어서 scanner.next()로 한줄씩 받으면되는데

var nc = 5
d[0] = d[0].substring(0, nc) + 'D' + d[0].substring(nc+1)

자바와 비슷하게 문자열의 일부를 수정하려면 이런식으로 substring() 메소드를 이용할 필요가 있다.

 

 

'노트' 카테고리의 다른 글

c++) priority_queue cmp 구조체 정의  (0) 2021.12.27
c++) cin.ignore()  (0) 2021.12.26
c++) bitset 클래스  (0) 2021.11.16
c++) transform 함수  (0) 2021.10.21
c++) stoi 함수, string에 숫자 이외의 문자가 포함시  (0) 2021.10.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함