69. 이진수 더하기
class Solution {
public String solution(String bin1, String bin2) {
String answer = "";
int rBin1 = ten(bin1);
int rBin2 = ten(bin2);
int sum = rBin1 + rBin2;
answer = two(sum);
return answer;
}
public int ten(String a){
int result = Integer.parseInt(a, 2);
return result;
}
public String two(int a){
if(a == 0){
return "0";
}
String result = "";
while(a > 0){
result = a%2 + result;
a = a/2;
}
return result;
}
}
<작성한 코드>
우선 받아온 2진수 두 개를 10진수로 변환해 줬다. Integer.parseInt(a,2)를 사용해서 2진수 a를 10진수로 바꾸도록 설정했다. 그 후 더해진 값을 10진수인 상태에서 더해주고 다시 2진수로 바꿔주었다.
70. A로 B 만들기
import java.util.*;
class Solution {
public int solution(String before, String after) {
int answer = 0;
char[] beforeArray = before.toCharArray();
char[] afterArray = after.toCharArray();
Arrays.sort(beforeArray);
Arrays.sort(afterArray);
if(Arrays.equals(beforeArray, afterArray)) answer = 1;
return answer;
}
}
<작성한 코드>
우선 두 String형 변수들을 char형으로 변환시켰다. 그 후 Arrays.sort를 사용해서 정렬시켜 준 뒤 배열을 비교하도록 Arrays.equals을 사용하여 만약 같다면 answer에 1을 대입해 주고 아니라면 그대로 0을 반환한다.
71. k의 개수
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
for(int z = i; z<=j; z++){
String zz = String.valueOf(z);
for(int x=0; x<zz.length(); x++){
if(Character.getNumericValue(zz.charAt(x)) == k) answer++;
}
}
return answer;
}
}
<작성한 코드>
for문을 하나 만들고 i부터 j까지 반복하도록 했다. 그리고 안에 정수 z를 String형태로 변경시켜 줬다. 그 뒤 중첩해서 for문을 하나 더 만들어주고 zz의 각각의 원소를 k와 비교했다. 만약 같으면 answer을 ++ 해줘서 정답을 구했다. Character.getNumericValue는 문자를 정수값으로 나타내는 역할을 한다.
72. 중복된 문자 제거
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i=0; i<my_string.length(); i++){
if(my_string.indexOf(my_string.charAt(i)) == i) answer+= my_string.charAt(i);
}
return answer;
}
}
<작성한 코드>
for문을 my_string의 길이에 맞게 반복시켰다. 그리고 if문안에 indexOf를 사용해서 my_string의 각 글자가 처음 등장하는 곳의 위치를 찾는다. 만약 그 위치가 i와 같다면 처음 등장하는 문자이기 때문에 이 경우에만 answer에 추가해 줬다.
73. 삼각형의 완성조건(1)
import java.util.*;
class Solution {
public int solution(int[] sides) {
int answer = 2;
Arrays.sort(sides);
if(sides[2] < sides[0]+sides[1]) answer = 1;
return answer;
}
}
<작성한 코드>
answer의 기본값을 2로 지정했다. 그리고 Arrays.sort를 사용해서 sides를 오름차순으로 정렬해 준 뒤 제일 큰 [2] 값이 [0]+[1]보다 작은지 체크한다. 만약 작으면 삼각형을 만들 수 있으니 answer에 1을 넣어주었다. 만약 if에 걸리지 않는다면 그대로 2를 반환한다.
74. 가까운 수
import java.util.*;
class Solution {
public int solution(int[] array, int n) {
int answer = array[0];
int min = Math.abs(array[0] - n);
for(int i=1; i<array.length; i++){
int result = Math.abs(array[i] - n);
if(min > result || (min == result && array[i] < answer)){
answer = array[i];
min = result;
}
}
return answer;
}
}
<작성한 코드>
값을 비교하기 위해 answer을 array [0]으로 초기화, 최소 차이를 저장해둘 min에는 array [0] - n을 해준 값의 절댓값을 넣었다. 그리고 for문으로 1부터 전체길이만큼 반복해 줬고 반복문 내의 result는 array [i] -n을 해줬다. 만약 차이가 min보다 result가 더 작거나, 두 개가 같은데 현재 원소가 answer보다 작을 때 작은 값을 반환해야 하니 이경우에도 answer, min의 값을 재설정해주었다. 금방 풀었다고 생각했는데 제출 시 5번 테스트케이스에서 자꾸 오류가 떴다. 생각해 보니 같은 경우를 처리를 안 해줬다. 그래서 시간이 생각보다 오래 걸렸던 것 같다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (82~88번 문제풀이) (0) | 2023.09.30 |
---|---|
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (75~81번 문제풀이) (0) | 2023.09.29 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (63~68번 문제풀이) (1) | 2023.09.26 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (56~62번 문제풀이) (0) | 2023.09.25 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (49~55번 문제풀이) (0) | 2023.09.22 |
남건욱's 공부기록