https://programmers.co.kr/learn/courses/30/lessons/12954
코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
programmers.co.kr
기본틀
class Solution {
public long[] solution(int x, int n) {
long[] answer = {};
return answer;
}
}
첫번째 시도
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for(int i = 0; i < n; i++){
answer[i] = x * (i + 1);
}
return answer;
}
}
테스트케이스13,14 실패! 왜지? (*・̆⍛・̆*)
모르겠어서 결국 질문하기 참고했다
https://programmers.co.kr/questions/13380
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
두번째 시도
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for(int i = 0; i < n; i++){
answer[i] = (long)x * (i + 1);
}
return answer;
}
}
해설
크기가 작은 데이터타입에서 크기가 큰 데이터타입으로의 형변환은 자동으로 이루어짐
따라서 배열 answer 이 long 타입이므로 int 를 넣어도 long 으로 들어가게 됨
!문제는! 배열에 들어가기 전에, 들어가야 하는 수를 계산하는 과정에서 이미 int 가 가질 수 있는 크기를 넘어버림
따라서 x를 long으로 형변환해주고 나서 연산한다
이때, 서로 다른 데이터타입의 연산 시 크기가 더 큰 데이터타입으로 변환되어 연산되므로 long 타입으로 연산됨
만약 (long)(x*(i+1)) 로 코드를 작성한다면? 연산을 다 마치고 long으로 변환하는 것이므로 소용없음 (이미 초과)
↓ 이전에 정리했던 페이지 참고!
https://tokkicode.tistory.com/entry/day02?category=987176
day02 - variable, datatype, type casting
> 변수 variable 어떤 값을 저장하는 공간 하나의 변수에는 하나의 값만, 한가지 타입의 값만 저장될 수 있음 프로그램을 실행할 때마다 저장된 값이 바뀔 수 있음 사용범위 - 블록{ } 안에서 선언된
tokkicode.tistory.com
성공!
'프로그래머스 > Lv.1' 카테고리의 다른 글
Lv.1 평균 구하기 (0) | 2022.05.24 |
---|---|
Lv.1 하샤드 수 (0) | 2022.05.24 |
Lv.1 핸드폰 번호 가리기 (0) | 2022.05.24 |
Lv.1 행렬의 덧셈 (0) | 2022.05.24 |
Lv.1 직사각형 별찍기 (0) | 2022.05.23 |