문자열 곱하기 ~ n의 배수
반복문을 이용해 k번만큼 my_string을 answer에 더해주면 쉽게 해결할 수 있는 문제.
class Solution {
public String solution(String my_string, int k) {
String answer = "";
for(int i = 0; i < k; i++) {
answer += my_string;
}
return answer;
}
}
이런 식으로 쉽게 작성할 수 있었다.
처음 문제를 보고 생각해낸 것은 a와 b를 문자열로 변환하여 더해준 다음, 크기 비교를 할 때에는 다시 정수형으로 변환하여 조건문을 사용해 answer를 정의해주는 것이라고 생각했다.
String ab = a + "" + b;
String ba = b + "" + a;
if ((int)ab > (int)ba || (int)ab == (int)ba) {
answer = (int)ab;
} else {
answer = (int)ba;
}
이를 기반으로 코드를 만들었는데 생긴 것도 그렇고 딱봐도 이상해보인다.
String 을 int형으로 변환하기 위해서 추가적인 공부가 필요하다고 느껴 자바의 정석을 찾아본 결과,
Integer.parseInt( ) 형태로 변환이 가능함을 알았다.
int a1 = Integer.parseInt(ab);
int b1 = Integer.parseInt(ba);
이런 식으로 문자열 ab,ba를 정수형으로 바꿔줄 수 있다
그리고 이 변수들을 활용하여 조건문을 만들게 되면
class Solution {
public int solution(int a, int b) {
int answer = 0;
String ab = a + "" + b;
String ba = b + "" + a;
int a1 = Integer.parseInt(ab);
int b1 = Integer.parseInt(ba);
if (a1 > b1 || a1 == b1) {
answer = a1;
} else {
answer = b1;
}
return answer;
}
}
이와 같은 형태를 만들 수 있었고 테스트를 돌려본 결과 통과할 수 있었다.
다만 선언한 변수들도 많고 코드 자체가 복잡하다고 느껴져서 다른 사람들의 제출결과를 찾아봤는데,
class Solution {
public int solution(int a, int b) {
int answer = 0;
int aLong = Integer.parseInt(""+a+b);
int bLong = Integer.parseInt(""+b+a);
answer = aLong > bLong ? aLong : bLong;
return answer;
}
}
이런 식으로 Integer.parseInt의 괄호 안에 식을 적고, 삼항연산자를 이용하여 가독성이 좋은 코드로 바꿀 수 있다는 점을 알게 되었다.
문자열을 int형으로 변환하기 위해서 Integer.parseInt( )를 사용한다는 점은 기억해두자.
위의 문제를 살짝 변형한 문제. 이번에는 쉽게 풀 수 있었다.
class Solution {
public int solution(int a, int b) {
int answer = 0;
int x = Integer.parseInt("" + a + b);
int y = 2 * a * b;
answer = x >= y ? x : y;
return answer;
}
}
나머지 연산자를 사용하면 쉽게 풀수 있는 문제다. 기존 answer의 값을 0으로 설정하고 num이 n의 배수일 때만 answer의 값을 1로 바꾸어주면 보다 깔끔한 코드를 작성할 수 있다.
int answer = 0;
if(num % n == 0) answer = 1;
return answer;
자바를 공부하면서 if문의 블럭 안에 수행될 문장이 하나라면 블럭을 생략할 수 있다고 배웠었다. 이를 좀 더 확실하게 알 수 있었는데, if문에서 실행문이 하나라면 블럭을 생략할 수 있다.
추가적으로 다른 사람들의 코드에서는 삼항연산자를 사용하는 모습을 많이 볼 수 있었다.
class Solution {
public int solution(int num, int n) {
int answer = num % n == 0 ? 1 : 0;
return answer;
}
}
삼항 연산자를 사용하면 보다 간결한 코드를 작성할 수 있다는 점.