Open MJKIM9403 opened 11 months ago
이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
arr1 | arr2 | result |
---|---|---|
[49, 13] | [70, 11, 2] | -1 |
[100, 17, 84, 1] | [55, 12, 65, 36] | 1 |
[1, 2, 3, 4, 5] | [3, 3, 3, 3, 3] | 0 |
class Solution {
public int solution(int[] arr1, int[] arr2) {
//길이가 다르면 긴쪽이 크다. 길이가 같다면... 합비교
int answer = 0;
int arrLength1= arr1.length;
int arrLength2= arr2.length;
int arrSum1 = 0;
int arrSum2 = 0;
for(int i=0; i<arrLength1; i++){
arrSum1 +=arr1[i];
}
for (int i = 0; i < arrLength2; i++) {
arrSum2 += arr2[i];
}
if (arrLength1 != arrLength2) {
if (arrLength1 > arrLength2) {
answer = 1;
} else if (arrLength1 < arrLength2) {
answer = -1;
} else {
answer = 0;
}
}
if (arrLength1 == arrLength2) {
if (arrSum1 > arrSum2) {
answer = 1;
} else if (arrSum1 < arrSum2) {
answer = -1;
} else {
answer = 0;
}
}
return answer;
}
}
-if문으로 비교하는 곳에서 오래걸림. 단순히 생각했다가 합을 어떻게 구하는지를 구하지 않았었음. for문으로 돌아가면서 배열을 다 더해주면된다.
정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.
class Solution {
public int solution(int[] num_list) {
int answer = 0;
for(int i=0; i<num_list.length; i++){
if(num_list[i]<0){
answer=i;
break;
}else{
answer=-1;
}
}
return answer;
}
}
1번 문제에 이런식으로 정규식을 사용하면 matches로도 풀이가 가능합니다...하지만 실행속도가 비교도 안될정도로 차이나니 정해진 문자열의 포함여부를 확인할때는 그냥 contains를 사용합시다...
class Solution {
public int solution(String str1, String str2) {
return str1.matches(".*"+ str2+ ".*") ? 1 : 2;
}
}
class Solution {
public int solution(String str1, String str2) {
return str1.contains(str2) ? 1 : 2;
}
}
문제 1
문제 문자열안에 문자열(https://school.programmers.co.kr/learn/courses/30/lessons/120908)
str1
,str2
가 매개변수로 주어집니다.str1
안에str2
가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.입출력 예
입출력 예
회고
-matches를 먼저 사용해봤는데 3개 중 2개만 성공하고 contains로 했더니 성공했습니다.