일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바 내부 클래스
- 자바 추상메서드
- 자바 String클래스
- Java추상클래스
- Java thorw
- Java객체배열
- 데이터베이스
- java super( )
- 자바 스트링클래스
- Express
- 자바 Random클래스
- 자바 예제
- 자바 문자열 클래스
- Java 추상 메서드
- DBMS
- Java업캐스팅
- dbeaver
- db
- 자바 try-catch
- Java다운캐스팅
- oracle
- database
- Java 내부 클래스
- Java문자열 클래스
- 오라클
- 자바 Wrapper클래스
- Java try-catch
- 자바 제어문
- nodejs
- 코딩
- Today
- Total
코딩이란 무엇일까
Java/자바 [프로그래머스 문제] (Lv.0 7의 개수), (Lv1.부족한 금액 계산하기) , (Lv1.없는 숫자 더하기) 본문
Java/자바 [프로그래머스 문제] (Lv.0 7의 개수), (Lv1.부족한 금액 계산하기) , (Lv1.없는 숫자 더하기)
둥구는 지굴다 2022. 11. 6. 15:29Lv.0 7의 개수 문제
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array 가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.
정답
public static int solution(int[] array) {
int answer = 0;
for(int i=0;i<array.length;i++) {
String s=String.valueOf(array[i]);
//배열에 있는 값을 문자열로 변환
for(int j=0;j<s.length();j++) {
if(s.charAt(j)=='7') { //문자열로 변환한 값을 문자형으로 인덱스 값 비교 7과 같은게 있는지.
answer++; //문자형의 인덱스 번호가 7과 같다면 aswner+1;
}
}
}
return answer;
}
}
설명
우선 배열의 정수 값을 문자형으로 다루기 위해서
String.ValusOf메서드를 사용하여 배열마다 문자열로 변환해 주었다.
따라서 index가 0일 때는 arrays배열의 0번째 값을 문자열로 바꾸어 준 뒤
중첩 for문을 사용하여 해당 인덱스 0번째의 값을 charAt( ) 메서드로 문자열의 인덱스 번호로 비교합니다.
따라서 문자열을 인덱스 번호로 하나하나 비교할 수 있게 되어
7이 여러 개 나와도 몇 개인지 알 수 있게 됩니다.
if조건문을 달라서 문자열에 7이 있다면
answer을 ++하게 되어 7의 개수를 도출해 낼 수 있습니다.
Lv.1 부족한 금액 계산하기
문제
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.
정답
public static long solution(int price, int money, int count) {
long answer = -1;
long total=0;
for(int i=1;i<=count;i++) {
total+=price*i;
}
if(total<=money) { //금액이 모자라지 않을 때
answer=0;
}
else {
answer= total-money; //금액이 모자랄 때
}
return answer; //부족한 금액을 return;
}
우선 먼저 생각해 주어야 할게 총가격의 합을 담을 변수 total을 추가로 선언해 준 뒤
반복문을 돌려 count만큼 돌려줍니다.
total+=price*i; 여기서 수식이 좀 헷갈렸지만
풀어서 생각해 보자면
total=total+price*i가 됩니다.
따라서 i는 1부터 카운트만큼이니 price에 i만큼 곱한 값을 total에 대입해 줍니다.
이렇게 수식을 만들었으면
이제 총금액인 total을 알 수 있습니다.
따라서 조건식을 걸어 total이 현재 가진 금액 money보다 작거나 같으면 지불할 금액이 모자라지 않을 경우이기 때문에
answer을 0으로 바꿔줍니다.
만일 그렇지 않다면 지불할 금액이 모자라다는 뜻이기에
모라잔 금액을 구하기 위해서 total-money를 answer에 대입해줍니다.
추가적으로 total을 long으로 선언한 이유는 초반에는 int total로 선언을 했지만
분명 코드는 오류가 없는데 컴파일러 오류가 계속 떠서 생각해보니
total이 int의 범위를 넘어가는 경우를 놓치고 있었습니다.
따라서 long으로 바꾸어주니 오류가 나지 않고 실행이 됐습니다.
Lv.1 없는 숫자 더하기
문제
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
정답
public static int solution(int[] numbers) {
int answer = -1;
int sum=0;
for(int i=0;i<numbers.length;i++) {
sum=sum+numbers[i];
answer=45-sum;
}
return answer;
}
설명
문제를 풀기전 문제만 보고 처음에는 배열을 순환해서 모든 값을 비교해서 넣어야 하나..?라고 생각을 했습니다.
그런데 생각해보니 0~9중 중복값이 들어가지 않더라고요.
따라서 0~9를 모두 더한 값은 45입니다.
이 부분은 고정적인 거죠
여기서 알아낼 수 있는게 numbers의 배열의 값을 모두 더한 뒤 45에서 numbers를 모두 더한 값을 빼면 어떻게 될까?
라는 생각을 해봤습니다.
없는 숫자가 어떤 것인지 도출해내는 문제가 아니기에
위의 코드를 작성해 봤습니다.
만약 0~9의 숫자중에 중복 값이 허용되고 없는 값을 더하는 게 아닌
없는 값을 따로 찾아라 라는 문제였다면 더 머리가 아팠을 것 같네요..ㅎ하ㅏ
'국비지원수업' 카테고리의 다른 글
Java/자바 [14일차] (1)-추상 클래스,추상 메서드 (0) | 2022.11.08 |
---|---|
Java/자바 [13일차] (1)-메서드 오버라이딩(Overriding) (0) | 2022.11.07 |
Java/자바[12일차](2)-다형성(PolymoPhism) (0) | 2022.11.05 |
Java/자바[12일차](1)-상속 (0) | 2022.11.05 |
java/자바[11일차]-(2)for-each문 (0) | 2022.11.03 |