최댓값 만들기(1) (120847)
class Solution {
public int solution(int[] numbers) {
int answer = 0;
for (int i = 0; i < numbers.length-1; i++) {
for (int j = i+1; j < numbers.length; j++) {
if(answer < numbers[i] * numbers[j]){
answer = numbers[i] * numbers[j];
}
}
}
return answer;
}
}
나는 위 사진과 같은 방법으로 이중 for문을 사용하여 i * j 값이 가장 큰 값을 answer 변수에 저장하는 방식으로 풀이했다.
그렇게 되면 모든 수가 한번씩 곱해질 수 있다.
삼각형의 완성조건(1) (120889)
// sides 배열 오름차순으로 정렬
// sides.length - 1번째를 가장 큰 값으로 지정
// 나머지 값들은 sum+= 을 이용하여 더해준다.
// 그렇다면 배열의 순서와 값의 크기 상관없이 문제를 풀 수 있다.
import java.util.*;
class Solution {
public int solution(int[] sides) {
int sum = 0 ;
Arrays.sort(sides);
sum = sides[0] + sides[1];
if(sum > sides[sides.length - 1]){
return 1;
}else{
return 2;
}
}
}
주석과 같이 오름차순 정렬을 먼저 해주었다. 세 변의 길이이기 때문에 배열의 크기는 고정이므로 바로 0번째 1번째 값을 더해주었다.
문자열 안에 문자열 (120908)
class Solution {
// str2 의 0,1,2가 연속적으로 일치해야 함
// str1 중 str2의 0번째가 일치하는 것을 찾기
public int solution(String str1, String str2) {
int cnt = 0;
int num = 0;
for(int i=0; i < str1.length(); i++) {
if( str1.charAt(i) == str2.charAt(cnt)){
num = i;
break;
}
}
for(int i=0; i < str2.length(); i++){
if(str1.charAt(i+num) == str2.charAt(i)){
cnt++;
}else if(str1.charAt(i+num) != str2.charAt(i)){
break;
}
}
if(cnt == str2.length()){
return 1;
}else{
return 2;
}
}
}
난 함수 쓸 생각 못했고 계속 풀이로 하는데 테스트에서 런타임에러나 다른 이유로 실패가 뜬다 ㅠ ㅠ
이 실패한 테스트 케이스가 뭔지 뜨지도 않아서 답답하다 계속 풀어보기로!
다른 사람들은 그냥 contains 함수를 이용해서 긴지아닌지만 판별해서 문제를 풀었는데. , , .,. ?!?!?!?!?!??!
'algorithm' 카테고리의 다른 글
[DP (Dynamic Programming)] 백준 11726 - 2xN 타일링 (0) | 2024.09.03 |
---|---|
[Programmers] [코딩테스트 입문] 배열의 유사도, 제곱수 구하기, 모음 제거 (0) | 2024.09.03 |
[Programmers] [코딩테스트 입문] 두 수의 나눗셈, 특정 문자 제거하기 (1) | 2024.09.03 |
(230619) Queue (0) | 2024.09.03 |
(230518) 알고리즘 - 괄호풀기 / DB (0) | 2024.07.25 |