## 1416
기초 5-1 1차원 배열
2진수 변환
import java.util.Scanner;
public class CodeUp1416 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
byte[] arr = new byte[32];
for (int i = 31; i >= 0; i--) {
if (n / (int) Math.pow(2, i) == 1) {
arr[i]++;
n -= (int) Math.pow(2, i);
}
}
int first = 0;
for (int i = 31; i >= 0; i--) {
if (arr[i] == 1)
first++;
if (first > 0) {
System.out.print(arr[i]);
}
}
if (first == 0)
System.out.println("0");
}
}
- 여러모로 조잡하긴 한데... 일단 어차피 0/1 이니까 Byte로 배열을 선언하긴 했는데 그럴거면 Boolean으로 받는게 맞나?
- 그리고 이왕 메모리 줄일거면 first도 Byte로 받았어야 했나?
- 배열을 안쓰고 for문 하나로 검사와 출력을 동시에 했으면 어땠을까... 근데 문제 자체가 1차원 배열에 분류돼있으니까 그냥 뒀다.
- first를 쓴게 좀 걸린다. 저거 없이 깔끔하게 처리하는 방법은 없을까...
## 1524
기초 5-3 2차원 배열
지뢰 찾기 1
import java.util.Scanner;
public class CodeUp1524 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
byte[][] slot = new byte[9][9];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
slot[i][j] = sc.nextByte();
}
}
byte selRow = sc.nextByte();
byte selCol = sc.nextByte();
if (slot[selRow - 1][selCol - 1] == 1) {
System.out.println(-1);
return;
}
int result = 0;
int rmin = (selRow == 1) ? 1 : selRow - 1;
int rmax = (selRow == 9) ? 9 : selRow + 1;
int cmin = (selCol == 1) ? 1 : selCol - 1;
int cmax = (selCol == 9) ? 9 : selCol + 1;
for (int r = rmin; r <= rmax; r++) {
for (int c = cmin; c <= cmax; c++) {
result += slot[r - 1][c - 1];
}
}
System.out.println(result);
}
}
- 9*9 배열을 입력받고 클릭할 위치 하나를 입력받는다. 입력이 기괴하게 많구나.
- 여기도 마찬가지로 Byte로 받은게 맞았을까 하는 의문
- 그리고 rmin rmax cmin cmax 이것도 필요한거였을까... 더 간단한 방법이 있을까?
'PS - CodeUp' 카테고리의 다른 글
1096, 1097, 1098 - 바둑판에 흰 돌 놓기, 바둑알 십자 뒤집기, 설탕과자 뽑기 (0) | 2022.01.20 |
---|---|
1093, 1094, 1095 - 이상한 출석 번호 부르기 1, 2, 3 (0) | 2022.01.20 |
1441, 1442, 1443 - 버블 정렬, 선택 정렬, 삽입 정렬 (0) | 2022.01.20 |
1099 - 성실한 개미 (0) | 2022.01.19 |
1166 1172 1257 1259 1271 1274 1278 1353 1354 1355 1380 (제어문, 반복문) (0) | 2022.01.18 |