Defanging IP address는 쉬워서 패스
뒤집고 숫자 치환
public int[][] flipAndInvertImage(int[][] image) {
int len = image.length;
int[][] imageArray = new int[len][len];
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
// 뒤집고 치환
imageArray[i][j] = 1 - image[i][len - j - 1];
}
}
return imageArray;
}
0을 1로 바꾸고, 1을 0으로 바꾸려면 1 - x 를 하면 된다!
imageArray[i][j] = 1 - image[i][len - j - 1];
public static int[] diStringMatch(String s) {
int[] result = new int[s.length() + 1];
int[] arr = new int[s.length() + 1];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
int iCount = 0;
int dCount = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'I') {
result[i] = arr[iCount];
iCount++;
} else {
result[i] = arr[arr.length - 1 - dCount];
dCount++;
}
}
result[s.length()] = arr[iCount];
return result;
}
result의 마지막 요소를 어떻게 넣어야할지가 가장 고민이 많이 되었다. dong 덕분에 해결
홀수 인덱스에 홀수, 짝수 인덱스에 짝수 아무 경우의 수 반환
홀수 짝수 여부가 인덱스와 다르면 다음거랑 자리 바꾸기
public int[] sortArrayByParityII(int[] nums) {
for (int i = 0; i < nums.length - 1; i++) {
if (i % 2 == 0 && nums[i] % 2 != 0) {
int add = 1;
while(nums[i] % 2 != 0) {
int temp = nums[i];
nums[i] = nums[i + add];
nums[i + add] = temp;
add++;
}
}
if (i % 2 != 0 && nums[i] % 2 == 0) {
int add = 1;
while(nums[i] % 2 == 0) {
int temp = nums[i];
nums[i] = nums[i + add];
nums[i + add] = temp;
add++;
}
}
}
return nums;
}
→ Dong 풀이가 더 좋아보인다. 홀수, 짝수를 새로운 리스트에 담아서 사용하는 방식으로 푸셨다. 다시 풀어보자.
public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) {
// greatest number 구하기
int max = 0;
for (int candy : candies) {
if (candy > max) {
max = candy;
}
}
List<Boolean> results = new ArrayList<>();
for (int i = 0; i < candies.length; i++) {
if (candies[i] + extraCandies >= max) {
results.add(true);
} else results.add(false);
}
return results;
}
public int maximumWealth(int[][] accounts) {
int max = 0;
for (int i = 0; i < accounts.length; i++) {
int sum = 0;
for (int j = 0; j < accounts[i].length; j++) {
sum += accounts[i][j];
}
if (sum > max) {
max = sum;
}
}
return max;
}