문제 출처 : 프로그래머스
class Solution {
public String solution(String code) {
String answer = "";
char mode = '0';
for (int i = 0; i < code.length(); i++) {
if(code.charAt(i) == '1') mode = mode == '0' ? '1' : '0';
if (mode == '0') {
if(code.charAt(i) != '1') { if(i % 2 == 0) answer += code.charAt(i); }
} else {
if(code.charAt(i) != '1') { if(i % 2 == 1) answer += code.charAt(i); }
}
}
return answer != "" ? answer : "EMPTY";
}
}
mode를 토글식으로 전환해서 조건에 맞는 식을 전개했다.
풀고 보니까 연산자들을 이용해서 식을 더 간소화 시킬 수도 있었을 것 같다.
class Solution {
public int solution(int a, int d, boolean[] included) {
int answer = 0;
for(int i = 0; i < included.length; i++) {
if (included[i]) answer += a + (i * d);
}
return answer;
}
}
등차수열은 첫항 + (n-1)공차로 구한다.
문제에서는 첫째항이 a, 공차가 d로 주어졌으므로
a + (n-1) d로 기본적인 식을 세우고,
included[i]가 i + 1항을 의미하므로
a + (i d);를 answer에 더했다.
class Solution {
public int solution(int a, int b, int c) {
int answer = 0;
if (a != b && a != c && c != b) return a+b+c;
if (a == b && a == c) { answer += (a+b+c) * ((a*a)+(b*b)+(c*c)) * ((a*a*a)+(b*b*b)+(c*c*c)); }
else answer += (a+b+c) * ((a*a)+(b*b)+(c*c));
return answer;
}
}
Math.pow() 메서드가 거듭제곱을 구하는 메서드로 알고는 있지만,
제곱수가 크지 않아 그냥 열심히 곱해줬다..
class Solution {
public int solution(int[] num_list) {
int sum = 1;
int mul = 0;
for (int i = 0; i < num_list.length; i++) {
sum *= num_list[i];
mul += num_list[i];
}
return sum < Math.pow(mul,2) ? 1 : 0;
}
}
class Solution {
public int solution(int[] num_list) {
String odd = "";
String even = "";
for (int i = 0; i < num_list.length; i++) {
if (num_list[i] % 2 == 0) odd += String.valueOf(num_list[i]);
else even += String.valueOf(num_list[i]);
}
return Integer.valueOf(odd) + Integer.valueOf(even);
}
}
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
int[] answer = Arrays.copyOf(num_list, num_list.length+1);
if(num_list[num_list.length-1] > num_list[num_list.length-2]) {
answer[num_list.length] = num_list[num_list.length-1] - num_list[num_list.length-2];
} else {
answer[num_list.length] = num_list[num_list.length-1] * 2;
}
return answer;
}
}
class Solution {
public int solution(int n, String control) {
for(int i = 0; i < control.length(); i++) {
switch (control.charAt(i)) {
case 'w': n += 1;
break;
case 's': n -= 1;
break;
case 'd': n += 10;
break;
case 'a': n -= 10;
break;
}
}
return n;
}
}
if로 쓰면 복잡해 보일 것 같아 switch문으로 풀었다.
class Solution {
public String solution(int[] numLog) {
String answer = "";
for(int i = 1; i < numLog.length; i++) {
switch(numLog[i]-numLog[i-1]) {
case 1: answer += "w";
break;
case -1: answer += "s";
break;
case 10: answer += "d";
break;
case -10: answer += "a";
}
}
return answer;
}
}
수 조작하기 1이랑 크게 다르지 않아서 비슷한 방식으로 풀었다.
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int arrint = 0;
for(int i = 0; i < queries.length; i ++) {
arrint = arr[queries[i][0]];
arr[queries[i][0]] = arr[queries[i][1]];
arr[queries[i][1]] = arrint;
}
return arr;
}
}
문제 이해를 못해서 한참을 헤맸다;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
for (int i = 0; i < queries.length; i++) {
int s = queries[i][0];
int e = queries[i][1];
int k = queries[i][2];
int min = Integer.MAX_VALUE;
for (int j = s; j <= e; j++) {
if ((arr[j] < min) && (k < arr[j])) {
min = arr[j];
}
}
if (min != Integer.MAX_VALUE) {
answer[i] = min;
} else {
answer[i] = -1;
}
}
return answer;
}
}
Integer.MAX_VALUE은 정수의 최대값을 출력한다.
자매품으로 최소값을 출력하는 Integer.MIN_VALUE도 있다.
정리가 잘 된 글이네요. 도움이 됐습니다.