알고리즘 정리/[swea]
[swea] 공부기록 day05
로미로미로
2024. 5. 8. 18:10
D2 마지막 문제
1954. 달팽이 숫자 (다른 코드 참고버전) 다시보기★
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
int N = scan.nextInt();
int [][] snail = new int[N][N];
int number = 1;
int X = 0;
int Y = 0; //(0,0)부터 시작
snail[Y][X] = number;
boolean XPlus = true; //처음 시작 -> 순
boolean XMinus = false;
boolean YPlus = false;
boolean YMinus = false;
for(int k=1; k<N*N; k++) {
if(XPlus) X++;
else if(XMinus) X--;
else if(YPlus) Y++;
else if(YMinus) Y--;
if(XPlus == true) {
if(X >= snail[0].length || (X<snail[0].length&&snail[Y][X]!=0)) {
X--;
Y++;
XPlus = false;
YPlus = true;
}
}
if(YPlus == true) {
if(Y >=snail.length ||(Y<snail.length && snail[Y][X] != 0)) {
Y--;
X--;
YPlus = false;
XMinus = true;
}
}
if(XMinus == true) {
if(X < 0 || (X>=0 && snail[Y][X] != 0)) {
X++;
Y--;
XMinus = false;
YMinus = true;
}
}
if(YMinus == true) {
if(YMinus && Y<0 || (Y>=0 && snail[Y][X] != 0)) {
Y++;
X++;
YMinus = false;
XPlus = true;
}
}
snail[Y][X] = ++number;
}
System.out.println("#"+(i+1));
for(int j=0; j<snail.length; j++) {
for(int k=0; k<snail[0].length; k++) {
System.out.print(snail[j][k] + " ");
}
System.out.println();
}
}
}
}
D3 시작
3431. 준환이의 운동관리
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
int L = scan.nextInt();
int U = scan.nextInt();
int X = scan.nextInt();
System.out.print("#"+(i+1)+" ");
if(X<L) {
System.out.println(L-X);
}
else if(L <= X && X <= U) {
System.out.println(0);
}
else {
System.out.println(-1);
}
}
}
}
10505. 소득 불균형
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
int N = scan.nextInt();
int [] arr = new int[N];
int plus =0;
int avg_num = 0;
for(int j=0; j<N; j++) {
arr[j] = scan.nextInt();
plus += arr[j];
}
double avg = plus/N;
for(int j=0; j<N; j++) {
if(arr[j] <= avg)
avg_num++;
}
System.out.printf("#%d %d\n", i+1, avg_num);
}
}
}
6730. 장애물 경주 난이도
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
int N = scan.nextInt();
int [] arr = new int[N];
int [] minus = new int[N-1];
for(int j=0; j<N; j++) {
arr[j] = scan.nextInt();
}
int max = 0;
int min = 0;
for(int j=0; j<N-1; j++) {
minus[j] = arr[N-j-1] - arr[N-j-2];
if(max < minus[j])
max = minus[j];
if(min > minus[j])
min = minus[j];
}
System.out.printf("#%d %d %d\n", i+1, max, min*(-1));
}
}
}
4406. 모음이 보이지 않는 사람
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
String S = scan.next();
String N = "";
for(int j=0; j<S.length(); j++) {
char s = S.charAt(j);
if(s != 'a' && s!='e' && s != 'i' && s != 'o' && s != 'u') {
N += s;
}
}
System.out.printf("#%d %s\n", i+1, N);
}
}
}
11688. Calkin-Wilf tree 1
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
int a = 1;
int b = 1;
String S = scan.next();
for(int j=0; j<S.length(); j++) {
if(S.charAt(j) == 'L') {
b = a + b;
}
else if(S.charAt(j) == 'R') {
a = a + b;
}
}
System.out.printf("#%d %d %d\n", i+1, a, b);
}
}
}