코드업 기초 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;
}
}
}
}
위 코드로 제출하면 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);
}
}
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("");
}
}
}
일단 여기까지 하고 다른 공부 하는 거로,,, 하,,
+) 수정
도저히 할 시간이 없어서 오늘에서야 다시 풀어봤다.풀진 못했지만
// 경로 찾기 부분
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();
}
}
}
문제가 이해는 가는데 코드로 작성하기가 힘들다…
댓글남기기