코드업 기초 100제 (9) + 수정

업데이트:


[1086] 그림 파일 저장용량 계산하기

[입력] 1024 768 24
[출력] 2.25 MB

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double w = sc.nextDouble();
		double h = sc.nextDouble();
		double b = sc.nextDouble();
		double mb = ((w * h * b) / 8) / 1024 / 1024;
		System.out.printf("%.2f MB", mb); 
	}
}


[1087] 여기까지! 이제 그만~

[입력] 57
[출력] 66

//틀린 코드
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int sum = 0;
		for(int i =0; i < num; i++) {
			sum += i;
			if(sum >= num) {
				System.out.print(sum);
				break;
			}
		}
	}
}

20201005_01
위 코드로 제출하면 3번째 테스트 케이스에서 통과하지 못한다. 가뿐히 통과할 줄 알았더니..ㅎ 1도 출력될 수 있도록 다음과 같이 코드를 변경했다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int sum = 0;
		for(int i = 0; i <= num; i++) {  // i <= num으로 변경
			sum += i;
			if(sum >= num) {
				System.out.print(sum);
				break;
			}
		}
	}
}


[1088] 3의 배수는 통과?

[입력] 10
[출력] 1 2 4 5 7 8 10

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int sum = 0;
		for(int i =1; i <= num; i++) {
			if(i % 3 == 0) {
				continue;
			}
			System.out.print(i + " ");
		}
	}
}


[1089] 수 나열하기1

[입력] 1 3 5
[출력] 13

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int d = sc.nextInt();
		int n = sc.nextInt();
		int sum = a;
		for(int i = 1; i < n; i++) {
			sum += d;
		}
		System.out.print(sum);
	}
}


[1090] 수 나열하기2

[입력] 2 3 7
[출력] 1458

// 틀린 코드
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int r = sc.nextInt();
		int n = sc.nextInt();
		int m = a;
		for(int i = 1; i < n; i++) {
			m *= r;
		}
		System.out.print(m);
	}
}

20201005_02
m의 값이 int타입이 표현할 수 있는 값의 범위를 넘어서서 통과되지 못했다. 그래서 m의 데이터 타입만 long으로 변경해줬더니 통과.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int r = sc.nextInt();
		int n = sc.nextInt();
		long m = a;
		for(int i = 1; i < n; i++) {
			m *= r;
		}
		System.out.print(m);
	}
}


[1091] 수 나열하기3

[입력] 1 -2 1 8
[출력] -85

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int m = sc.nextInt();
		int d = sc.nextInt();
		int n = sc.nextInt();
		long num = a;
		for (int i = 1; i < n; i++) {
			num = num * m + d;
		}
		System.out.print(num);
	}
}


[1092] 함께 문제 푸는 날

[입력] 3 7 9
[출력] 63

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int b = sc.nextInt();
		int c = sc.nextInt();
		int d = 1;
		while(d%a!=0 || d%b!=0 || d%c!=0) {
			d++;
		}
		System.out.print(d);
	}
}

거의 문제 설명을 보고 풀었다. 최소공배수 구하는 법을 꼭 기억하자,,

[1093] 이상한 출석 번호 부르기1

[입력]
10
1 3 2 2 5 6 7 4 5 9
[출력] 1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int[] nums = new int[24];
		int[] count = new int[24];
		for (int i = 1; i <= num; i++) {
			int a = sc.nextInt();
			nums[a]++;
		}
		for(int i = 1; i <= 23; i++) {
			System.out.print(nums[i] + " ");
		}
	}
}


[1094] 이상한 출석 번호 부르기2

[입력]
10
10 4 2 3 6 6 7 9 8 5
[출력] 5 8 9 7 6 6 3 2 4 10

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int[] nums = new int[num];
		for (int i = 0; i < nums.length; i++) {
			nums[i]= sc.nextInt();
		}
		for (int i = nums.length - 1; i >= 0; i--) {
			System.out.print(nums[i] + " ");
		}
	}
}


[1095] 이상한 출석 번호 부르기3

[입력]
10
10 4 2 3 6 6 7 9 8 5
[출력] 2

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int[] nums = new int[num];
		for (int i = 0; i < nums.length; i++) {
			nums[i]= sc.nextInt();
		}
		int min = nums[0];
		for(int i = 0; i < nums.length; i++) {
			if (min > nums[i])
				min = nums[i];
		}
		System.out.print(min);
	}
}


[1096] 바둑판에 흰 돌 놓기

[입력]
5
1 1
2 2
3 3
4 4
5 5
[출력]
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[][] pan = new int[20][20];
		for(int i = 1; i <= n; i++) {
			int x = sc.nextInt();
			int y = sc.nextInt();
			pan[x][y] = 1;
		}
		for(int i = 1; i <= pan.length -1; i++) {
			for(int j = 1; j <= pan.length-1; j++) {
				System.out.print(pan[i][j] + " ");
			}
			System.out.println("");
		}
	}
}


[1097] 바둑알 십자 뒤집기

[입력]
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
2
10 10
12 12
[출력]
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[][] pan = new int[20][20];
		for(int i = 1; i <= pan.length-1; i++) {
			for(int j = 1; j <=pan.length-1; j++) {
				pan[i][j] = sc.nextInt();
			}
		}
		int n = sc.nextInt();
		for(int i = 0; i < n; i++) {
			int x = sc.nextInt();
			int y = sc.nextInt();
			for(int j = 1; j <= pan.length -1; j++) {
				if(pan[x][j] == 0)
					pan[x][j] = 1;
				else
					pan[x][j] = 0;
			}
			for(int j = 1; j <= pan.length -1; j++) {
				if(pan[j][y] == 0)
					pan[j][y] = 1;
				else
					pan[j][y] = 0;
			}
		}
		
		for(int i = 1; i <= pan.length -1; i++) {
			for(int j = 1; j <= pan.length-1; j++) {
				System.out.print(pan[i][j] + " ");
			}
			System.out.println("");
		}
	}
}


[1098] 설탕과자 뽑기

[입력]
5 5
3
2 0 1 1
3 1 2 3
4 1 2 5
[출력]
1 1 0 0 0
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 0 0 0 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int w = sc.nextInt();
		int h = sc.nextInt();
		int[][] pan = new int[w + 1][h + 1];
		int n = sc.nextInt();

		for (int i = 0; i < n; i++) {
			int l = sc.nextInt();
			int d = sc.nextInt();
			int x = sc.nextInt();
			int y = sc.nextInt();
			for (int j = 0; j < l; j++) {
				if (d == 0) {
					pan[x][y] = 1;
					y++;
				} else {
					pan[x][y] = 1;
					x++;
				}
			}
		}
		for (int i = 1; i < w +1; i++) {
			for (int j = 1; j < h +1; j++) {
				System.out.print(pan[i][j] + " ");
			}
			System.out.println("");
		}
	}
}


[1099] 성실한 개미

[입력]
1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 0 1
1 0 0 1 1 1 0 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 0 0 0 0 1 2 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
[출력]
1 1 1 1 1 1 1 1 1 1
1 9 9 1 0 0 0 0 0 1
1 0 9 1 1 1 0 0 0 1
1 0 9 9 9 9 9 1 0 1
1 0 0 0 0 0 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[][] pan = new int[10][10];
		int ant = 9;
		int foodX = 0, foodY = 0;
		for (int i = 0; i < pan.length; i++) {
			for (int j = 0; j < pan.length; j++) {
				pan[i][j] = sc.nextInt();
				if (pan[i][j] == 2) {
					foodX = i;
					foodY = j;
				}
			}
		}
		System.out.println(foodX + " x");
		System.out.println(foodY + " y");
		for (int i = 0; i < foodX + 1; i++) {
			for (int j = i; j < foodY + 1; j++) {
				if (pan[i][j] == 0 || pan[i][j] == 2) {
					pan[i][j] = ant;
				}
			}
		}
		for (int i = 0; i < pan.length; i++) {
			for (int j = 0; j < pan.length; j++) {
				System.out.print(pan[i][j] + " ");
			}
			System.out.println("");
		}
	}
}

20201005_03

일단 여기까지 하고 다른 공부 하는 거로,,, 하,,

+) 수정
도저히 할 시간이 없어서 오늘에서야 다시 풀어봤다.풀진 못했지만

// 경로 찾기 부분
		for (int i = 1; i <= foodX + 1; i++) {
			for (int j = i; j < foodY + 1; j++) {
				if (pan[i][j] == 0 || pan[i][j] == 2)
					pan[i][j] = ant;
				if (pan[i][j] == 1)
					break;
			}
		}

위 부분을 여러 방법으로 바꿔봤지만 답을 찾지 못했다. 결국 답을 봤다. 답을 보니 생각해봤던 방법 중에 있던 방법이었다..생각만한게 문제

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[][] pan = new int[10][10];
		int ant = 9;
		// pan 입력받기 (먹이 좌표를 굳이 구하지 않아도 돼서 삭제)
		for (int i = 0; i < pan.length; i++) {
			for (int j = 0; j < pan.length; j++) {
				pan[i][j] = sc.nextInt();
			}
		}

		// 경로 찾기
		int c = 1; //벽을 만나면 아래 방향으로 이동할 수 있도록 j를 좌표를 담을 수 있는 변수 생성
		for (int i = 1; i < pan.length; i++) {
			for (int j = c; j < pan.length; j++) {
				if (pan[i][j] == 2) {
					pan[i][j] = ant;
					i = 9;
				} else {
					if (pan[i][j] == 0) {
						pan[i][j] = ant;
					} else {
						c = j - 1;
						break;
					}
				}
			}
		}
		// 출력
		for (int i = 0; i < pan.length; i++) {
			for (int j = 0; j < pan.length; j++) {
				System.out.print(pan[i][j] + " ");
			}
			System.out.println();
		}
	}
}

문제가 이해는 가는데 코드로 작성하기가 힘들다…

참고

태그:

카테고리:

업데이트:

댓글남기기