728x90
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
제일 직관적인 방법
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int tc = 1; tc <= t; tc++) {
int n = sc.nextInt();
int k = sc.nextInt();
int arr[] = new int[k]; // 조
for (int i = 0; i < k; i++) {
for (int j = 0; j < n; j++) {
if (j % 2 == 0) {
arr[i] += k * j + i+1;
} else {
arr[i] += k * (j + 1) - i;
}
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < k; i++) {
sb.append(arr[i] + " ");
}
System.out.println("#" + tc + " " + sb);
}
}
}
방법 2. 배열 사용 x

import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int tc = 1; tc <= t; tc++) {
int n = sc.nextInt();
int k = sc.nextInt();
System.out.print("#"+tc+" ");
for (int i = 0; i < k; i++) {
int sum = 0;
for (int j = 1; j <= n; j++) {
if (j % 2 == 0) {
sum += j * k; //짝수
} else {
sum += (j - 1) * k + 1; //홀수
}
}
if (n % 2 != 0) { //n에 따라 합 값이 변함
System.out.print(sum + i + " ");
} else {
System.out.print(sum + " ");
}
}
System.out.println();
}
}
}
방법 1. 배열 사용
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int tc = 1; tc <= t; tc++) {
int n = sc.nextInt();
int k = sc.nextInt();
int arr[][] = new int[n][k];
int cnt = 1;
int sum = 0;
System.out.print("#"+tc+" ");
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
for (int j = 0; j < k; j++) {
arr[i][j] = cnt;
cnt++;
}
} else {
for (int j = k - 1; j >= 0; j--) {
arr[i][j] = cnt;
cnt++;
}
}
}
for (int i = 0; i < k; i++) {
sum = 0;
for (int j = 0; j < n; j++) {
sum += arr[j][i];
}
System.out.print(sum + " ");
System.out.println();
}
}
}
}
2차원 배열에 순서를 바꾸며 기록을 해주고
조에 있는 인원들을 합한다.
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t= sc.nextInt();
for(int tc=1;tc<=t;tc++) {
int n = sc.nextInt();
int k = sc.nextInt();
int arr[][]=new int[n+1][k+1];
for(int i=1;i<=n;i++) {
for(int j=1;j<=k;j++) {
if(i%2==0) {
arr[i][k-j+1] = (i-1)*k+j;
}
else {
arr[i][j] = (i-1)*k+j;
}
}
}
System.out.print("#"+tc+" ");
int sum=0;
for(int i=1;i<=k;i++) {
sum=0;
for(int j=1;j<=n;j++) {
sum+=arr[j][i];
}
System.out.print(sum+" ");
}
System.out.println();
}
}
}
방향을 바꾸지 않고 값을 넣어줄 때 배열의 끝에서 부터 넣어주는 방법도 있다.
728x90
'SW Expert Academy > SWEA D3' 카테고리의 다른 글
| [SW Expert Academy] 알 덴테 스파게티 (D3) (9) | 2024.10.01 |
|---|---|
| [SW Expert Academy] 진용이네 주차타워 (D3) (0) | 2024.10.01 |
| [SW Expert Academy] 파도반 수열 (D3) (0) | 2024.09.29 |
| [SW Expert Academy] 정삼각형 분할 놀이 (D3) (0) | 2024.09.29 |
| [SW Expert Academy] 최장 증가 부분 수열 (D3) (0) | 2024.09.29 |