108. 그림 확대
class Solution {
public String[] solution(String[] picture, int k) {
int height = picture.length;
int width = picture[0].length();
int plusHeight = height * k;
int plusWidht = width * k;
String[] answer = new String[plusHeight];
for(int i=0; i<plusHeight; i++){
int row = i / k;
String result = "";
for(int j=0; j<plusWidht; j++){
int col = j / k;
char ch = picture[row].charAt(col);
result += ch;
}
answer[i] = result;
}
return answer;
}
}
<작성한 코드>
기본 높이와 너비는 picture의 길이, 배열하나의 길이만큼이니 먼저 선언했다. 그 뒤 확장된 가로 세로의 길이는 기존 길이에서 * k를 해주면 된다. 후 정답이 될 answer배열의 크기는 확장된 높이의 길이만큼 선언했다. for문안에서는 먼저 int row에 i/k를 해줬다. 이유는 0부터 plusHeight까지 반복할 건데, k가 5일 때로 예를 들면 0/5 = 0, 1/5 = 0, 2/5 = 0, 3/5 = 0, 4/5 = 0, 5/5 = 1 이런 식으로 넣어야 할 개수만큼 넣도록 정수를 선언할 수 있기 때문이다. 내부의 for문에서는 같은 방법으로 열의 길이를 설정해 주고, 문자형 변수 ch안에 picture의 행번호에서 몇 번째 문자값을 가져올지 선언해 주고 result에 담아줬다. 담아준 result는 반복문이 한번 끝날 때마다 answer [i]에 넣어줬다.
109. 커피 심부름
class Solution {
public int solution(String[] order) {
int answer = 0;
for(int i=0; i<order.length; i++){
if(order[i].contains("americano") || order[i].equals("anything")) answer += 4500;
if(order[i].contains("cafelatte")) answer += 5000;
}
return answer;
}
}
<작성한 코드>
간단한 문제다. 각 order의 배열 안에 americano, cafelatte가 있는지 체크 후 존재하면 맞는 금액을 더해줬다. anything일 경우에도 아메리카노와 같은 가격을 더해줘야 하기 때문에 아메리카노 부분에 or문으로 넣어주고 반환했다.
110. 날짜 비교하기
class Solution {
public int solution(int[] date1, int[] date2) {
int answer = 0;
for(int i=0; i<date1.length; i++){
if(date1[i] < date2[i]) return 1;
if(date1[i] > date2[i]) return 0;
}
return answer;
}
}
<작성한 코드>
각각의 원소를 비교했다. 기본값을 0으로 두고 만약 date1의 연도값이 더 작으면 1을 리턴하고 크면 0을 리턴했다. 여기서 걸리지 않으면(값이 같으면) 기본값인 0으로 지속될 것이다. 그 후 월과 일도 차례로 비교하고 아무것도 걸리지 않으면 answer에 0이 담긴 채로 그대로 반환되게 해 줬다.
111. 주사위 게임 1
class Solution {
public int solution(int a, int b) {
int answer = 0;
if(a%2 == 1 && b%2 == 1) answer += (a*a) + (b*b);
if((a%2 == 1 && b%2 == 0) || (a%2 == 0 && b%2 == 1)) answer += 2 * (a+b);
if(a%2 == 0 && b%2 == 0) answer += Math.abs(a-b);
return answer;
}
}
<작성한 코드>
각 조건에 맞게 if문을 걸어주고 값을 맞게 반환했다. 절댓값을 구할때는 Math.abs를 사용해서 a-b의 절댓값을 대입해 줬다.
112. 정수 찾기
class Solution {
public int solution(int[] num_list, int n) {
int answer = 0;
for(int i=0 ;i<num_list.length; i++){
if(num_list[i] == n) answer = 1;
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. num_list의 길이만큼 반복해 주고 각 원소의 값이 n과 일치하면 answer에 1을 넣어줬다.
113. 꼬리 문자열
class Solution {
public String solution(String[] str_list, String ex) {
String answer = "";
for(int i=0; i<str_list.length; i++){
if(str_list[i].contains(ex)) continue;
answer += str_list[i];
}
return answer;
}
}
<작성한 코드>
str_list의 길이만큼 반복문을 돌려줬다. 내부에서는 str_list내부에 ex를 포함하고 있으면 continue 시켜줬고, 여기에 걸리지 않으면 answer에 str_list의 값을 추가해 줬다.
114. 부분 문자열
class Solution {
public int solution(String str1, String str2) {
int answer = 0;
if(str2.contains(str1)) answer = 1;
return answer;
}
}
<작성한 코드>
매우 간단한 문제다. str2안에 str1이 포함되어 있는지 비교만 해주면 된다. contains를 사용했다.
115. 부분 문자열인지 확인하기
class Solution {
public int solution(String my_string, String target) {
int answer = 0;
if(my_string.contains(target)) answer = 1;
return answer;
}
}
<작성한 코드>
바로 위의 부분 문자열문제와 동일한 문제였다. contains으로 내부값을 비교해 줬다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (123~126번 문제풀이) (0) | 2023.10.10 |
---|---|
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (116~122번 문제풀이) (1) | 2023.10.09 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (101~107번 문제풀이) (1) | 2023.10.05 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (95~100번 문제풀이) (1) | 2023.10.04 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (89~94번 문제풀이) (1) | 2023.10.04 |
남건욱's 공부기록