반응형
250x250
Notice
Recent Posts
«   2025/05   »
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 31
관리 메뉴

코딩연습장

정올 - 숫자사각형2 #1856 [Java, C, C++, Python] 본문

정올

정올 - 숫자사각형2 #1856 [Java, C, C++, Python]

감귤짱 2024. 5. 25. 09:00
728x90
반응형

숫자사각형2 #1856

 

[ 문제 ]

사각형의 높이 n과 너비 m을 입력받은 후, 사각형 내부에 지그재그 형태로 1부터 n*m번까지 숫자가 차례대로 출력되는 프로그램을 작성하시오. 

 

< 처리조건 > 
숫자의 진행 순서는 처음에 왼쪽에서 오른쪽으로 너비 m만큼 진행 한 후 방향을 바꾸어서 이를 반복한다. 

 

[ 높이가 4, 너비가 5인 경우 ]

1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16

 

[ 입력 ]

사각형의 높이n와 너비m( n과 m의 범위는 100 이하의 정수)을 입력받는다.

 

[ 출력 ]

위에서 형태의 직사각형을 입력에서 들어온 높이 n과 너비 m에 맞춰서 출력한다.
숫자 사이는 공백으로 구분한다.

 

[ 예제 ]

입력

4 5

출력

1 2 3 4 5 
10 9 8 7 6 
11 12 13 14 15 
20 19 18 17 16

 

[ 출처 ]

JUNGOL

 

728x90
반응형
 

 

Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();    // 높이 (행)
        int m = sc.nextInt();    // 너비 (열)
        int a = 0;               // 값
        for(int i=0;i<n;i++) {
            if(i%2==0) {    // 행이 홀수일 때   
                if(i>0) a += m;  // 첫행 이후 m을 더하기
                for(int j=0;j<m;j++) {
                    a++;    // 출력 전에 1 증가시키기
                    System.out.print(a + " ");
                }
            }else {     // 행이 짝수일 
                a += m;   // m 더하기
                for(int j=0;j<m;j++) {
                    System.out.print(a + " ");
                    a--;  // 출력 후 1 감소시키기
                }
            }
            System.out.println();
        }
    }
}

 

C

#include <stdio.h>

int main(){
    int n, m;
    scanf("%d %d", &n, &m);
    int a = 0;
    for(int i=0;i<n;i++){
        if(i%2==0){
            if(i>0) a += m;
            for(int j=0;j<m;j++){
                a++;
                printf("%d ", a);
            }
        }else{
            a += m;
            for(int j=0;j<m;j++){
                printf("%d ", a);
                a--;
            }
        }
        printf("\n");
    }
    return 0;
}

 

C++

#include <iostream>

using namespace std;

int main(){
    int n, m;
    cin >> n >> m;
    int a = 0;
    for(int i=0;i<n;i++){
        if(i%2==0){
            if(i>0) a += m;
            for(int j=0;j<m;j++){
                a++;
                cout << a << " ";
            }
        }else{
            a += m;
            for(int j=0;j<m;j++){
                cout << a << " ";
                a--;
            }
        }
        cout << endl;
    }
    return 0;
}

 

Python

n, m = map(int, input().split())
a = 0
for i in range(n):
    if i%2==0:
        if i>0: a += m
        for j in range(m):
            a += 1
            print(a, end=" ")
    else:
        a += m
        for j in range(m):
            print(a, end=" ")
            a -= 1
    print()

 

 

 

https://jungol.co.kr/problem/1856

 

문제 - JUNGOL

history 최근 본 문제

jungol.co.kr

 

728x90
반응형