import java.util.ArrayList;
import java.util.stream.IntStream;
public class RealTest {
public int solution(int[] arr1) {
int answer = 0;
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i <= 9; i++){
int finalI = i; // 람다식은 final 변수 지정 필요
if(!IntStream.of(arr1).anyMatch(x->x == finalI)){
list.add(i);
}
}
if(list.get(0) < list.get(1)){
for(int i = list.get(0); i<= list.get(1); i++){
answer += i;
}
}else{
for(int i = list.get(1); i<= list.get(0); i++){
answer += i;
}
}
return answer;
}
public static void main(String[] args) {
RealTest method = new RealTest();
int[] arr1 = {1,3,5,9,2,4,8,0};
System.out.println(method.solution(arr1));
}
}
프로그래머스 문제랑 너무나도 비슷해서 좋았는데 자세히 보니 응용할 부분이 있었다.... 뭔가 두가지 문제를 섞어놓은듯한 느낌?
Stream은 쓸수록 신기하고 유용한 것 같다. anyMatch는 알고만 있었고 써보진 못했었는데 이번 기회에 사용하게 되어서 기분 좋다.
람다식에는 final 변수만 사용할 수 있다는 것도 처음 알게되었다.
public class RealTest2 {
public String solution(String s) {
String answer = "";
//s.replace(" ", "");
String[] strArr = s.split("");
int idx = 0;
for(int i=0; i<s.length(); i++){
if(strArr[i].equals(" ")) {
strArr[i] = " ";
}
else if(idx %2 == 0){
strArr[i] = strArr[i].toUpperCase();
idx ++;
}
else {
strArr[i] = strArr[i].toLowerCase();
idx++;
}
answer += strArr[i];
}
return answer;
}
public static void main(String[] args) {
RealTest2 method = new RealTest2();
String s ="hang hae ninety nine";
System.out.println(method.solution(s));
}
}
2번 문제는 공백을 어떻게 처리하느냐가 관건이였던 것 같다. 마찬가지로 프로그래머스의 문제와 비슷했는데 공백 처리부분만 달랐다.
공백을 아예 없애버렸다가 출력할때 필요한 걸 뒤늦게 깨닫고 다시 살려냈다.
생각보다 간단히 풀어낸 문제같다.