프로그래머스 코딩테스트 입문 - DAY13
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
s | result |
---|---|
"1 2 Z 3" | 4 |
"10 20 30 40" | 100 |
"10 Z 20 Z 1" | 1 |
"10 Z 20 Z" | 0 |
"-1 -2 -3 Z" | -3 |
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String[] strArray = s.split(" ");
String[] tmpArray = {"0"};
for(String str : strArray) {
if(str.equals("Z")) {
answer -=Integer.valueOf(tmpArray[0]);
}
else {
answer += Integer.valueOf(str);
tmpArray[0] = str;
}
}
return answer;
}
}
Z이전 숫자를 뺀 나머지 숫자를 더해 return하는 문제이다. 숫자가 나오면 임시배열에 저장해두고, Z를 만나면 임시배열 값을 다시 빼는 형태로 코딩했다.
문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.
letter | result |
---|---|
["We", "are", "the", "world!"] | [2, 3, 3, 6] |
["I", "Love", "Programmers."] | [1, 4, 12] |
class Solution {
public int[] solution(String[] strlist) {
int[] answer = new int[strlist.length];
int i =0;
for(String str:strlist) {
answer[i] = str.length();
i++;
}
return answer;
}
}
배열 형태가 String인 경우에는 for(String str:strlist) 처럼 사용할 수 있다.
int형태이면 for(int i:Array)
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
my_string | result |
---|---|
"aAb1B2cC34oOp" | 10 |
"1a2b3c4d123" | 16 |
import java.util.*;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.util.List;
class Solution {
public String solution(String my_string) {
String answer = "";
List<String> obj = Arrays.asList(my_string.split(""));//리스트 형태로 바꿈
List<String> newList = obj.stream().distinct().collect(Collectors.toList());//중복값 제거
answer = String.join("", newList);//str형태로 바꿈
return answer;
}
}
주어진 my_string을 List로 바꾸고 중복값을 제거한 후, 다시 string형태로 바꿔 return했다.
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
n | result |
---|---|
[1, 2, 3] | 2 |
[3, 6, 2] | 2 |
[199, 72, 222] | 1 |
class Solution {
public int solution(int[] sides) {
int answer = 0;
int res = 0;
int max = 0;
int cnt=0;
if(sides[0]==sides[1]&&sides[1]==sides[2])
return 1; // 정삼각형이므로 바로 return
for(int i=0;i<sides.length;i++) {
if(max<sides[i]) {
max = sides[i];
}
}
for(int i=0;i<sides.length;i++) {
if(max!=sides[i]) {
res += sides[i];
}
if(max==sides[i]){
cnt++;
}
}
if(cnt==2)
return 1;
if(res<=max)
return 2;
else
return 1;
}
}
삼각형의 조건은 다음과 같다.
1. 위 문제처럼 가장 긴 변이 나머지 변을 더한 것보다 작은 경우
2. 이등변삼각형일 경우 (세 값이 모두 같을 때)
3. 정삼각형일 경우 (가장 큰 값 두개가 같을 때)
출처 : https://school.programmers.co.kr/learn/challenges
이미지 출처 : 작가 storyset 출처 Freepik