java 205

x만큼 간격이 있는 n개의 숫자 (자바, Java)

문제가 쉬워보였으나, 간과한 부분이 있었다. x는 충분히 크다. n은 크지 않지만, 곱하면 꽤 크다. 그래서 둘이 곱하면 int범위 (대략 +-21억)을 초과한다. 따라서 long으로 적절히 cast해줘야하는데, 주의할 점은 (long)int * int는 OK, (long)(int*int)는 cast 이전에 두 수의 곱이 int로 한번 반환되므로 에러가 발생한다. class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; for (int i=0; i

자연수 뒤집어 배열로 만들기 (자바, Java)

어려운건 아닌데, 이런 숫자 변환 관련해서 풀이를 남기고 싶었다. 숫자를 자릿수로 끊는경우, 내가 주로 사용하는건 두가지 방법이 있다. 첫번째로 10씩 반복해서 나눠주면서 나머지를 추출, 그후 원래 변수는 10을 나눈다. -> while문으로 변수값이 0이면 탈출. String으로 변환, charAt을 활용한다. 개인적으로는 후자가 더 간편하다. 단, 이 문제는 자릿수로 접근하면 더 편할 것 같았다. 거꾸로 세면 되니까, 자릿수대로 넣어주면 되기 때문. 일단 아무생각없이 String을 이용했다. class Solution { public int[] solution(long n) { String str = String.valueOf(n); int l = str.length(); int[] answer = ..

치킨쿠폰 (자바, Java)

재귀로 푸는게 제일 나은듯. 효율 이슈로 반복문으로 풀긴 했는데... 표를 만들어서, 예제를 티키타카를 해봤다. 첫 chicken은 전부 쿠폰으로 반환하고, 서비스가 0인 경우, 쿠폰/10을 서비스로 반환한다. 서비스 치킨만큼 쿠폰을 또 추가, 서비스는 비워준다. 이 과정을 반복해서, 서비스가 0이면서, 쿠폰이 10장 미만으로 더이상 추가 치킨이 없는 경우 종료. class Solution { public int solution(int chicken) { int answer = 0; int service = 0; // coupon은 chicken으로 그대로 쓴다. // 재귀를 반복문으로 구현, 서비스 치킨이 남지 않았으면서, //잔여쿠폰도 10장 미달이 되면 종료. while (!(service==0 &..