본문 바로가기
728x90
반응형

JAVA/Programmers133

JAVA 프로그래머스 [예산] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> Summer/Winter Coding(~2018) -> 예산 https://school.programmers.co.kr/learn/courses/30/lessons/12982 해결 과정 일단 문제를 보았을 때는 어떻게 해결해야 하나 싶었다. 하지만 코드를 한 줄 한 줄 쓰다보니 단순하다는 것을 깨달았다. 먼저 Arrays.sort()로 배열을 정렬해야 한다. 정렬하게 되면 d 원소가 작은 순서대로 정렬되기 때문에 최대의 조건을 만족하게 된다. 먼저 예산의 합을 담을 hap 변수를 선언해주고, for문을 이용하여 hap에 원소를 누적하여 합해준다. 그러고 최대 부서를 나타낼 변수 answer에 +1을 해준다. (answer++) 다만 answer++을 실행하기 전에 i.. 2023. 8. 19.
JAVA 프로그래머스 [3진법 뒤집기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 월간 코드 챌린지 시즌1 -> 3진법 뒤집기 https://school.programmers.co.kr/learn/courses/30/lessons/68935 해결 과정 두 개의 해결법을 찾았으므로 소스 코드와 함께 해결과정을 살펴보자. 소스 코드 (1) import java.util.*; class Solution { public int solution(int n) { int answer = 0; String ans = ""; while(n != 0) { ans += n%3; n /= 3; } // 3진수인 a를 10진수로 return Integer.parseInt(ans, 3); } } (2) import java.util.*; class Solution { pu.. 2023. 8. 11.
JAVA 프로그래머스 [같은 숫자는 싫어] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 스택/큐 -> 같은 숫자는 싫어 https://school.programmers.co.kr/learn/courses/30/lessons/12906 해결 과정 세 개의 해결법을 찾았으므로 소스 코드와 함께 해결과정을 살펴보자. 소스 코드 (1) List형을 int배열로 변환 import java.util.*; public class Solution { public int[] solution(int []arr) { List list = new ArrayList(); int tmp = -1; for (int i=0; i 2023. 8. 10.
JAVA 프로그래머스 [최대공약수와 최소공배수] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 최대공약수와 최소공배 https://school.programmers.co.kr/learn/courses/30/lessons/12940 해결 과정 항상 고민하게 되는 최대공약수와 최소공배수 문제이다. 소스 코드 2023. 8. 10.
JAVA 프로그래머스 [직사각형 별찍기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 직사각형 별찍기 https://school.programmers.co.kr/learn/courses/30/lessons/12969 해결 과정 코딩테스트를 처음 접했을 때 많이 풀었던 별 찍기 문제이다. 단순히 이중 for문을 사용하여 풀면 되는데, 한 줄을 n만큼 다 찍고 나면 println() 을 사용하여 줄바꿈을 해주면 된다. 소스 코드 import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); for (int i=0.. 2023. 8. 8.
JAVA 프로그래머스 [행렬의 덧셈] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 행렬의 덧셈 https://school.programmers.co.kr/learn/courses/30/lessons/12950 해결 과정 소스 코드 2023. 8. 8.
JAVA 프로그래머스 [문자열 다루기 기본] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 문자열 다루기 기본 https://school.programmers.co.kr/learn/courses/30/lessons/12918 해결 과정 이 문제는 특정한 경우에만 true를 반환하는 것으로, try ~catch 문을 이용하여 풀면 손쉽게 풀 수 있다. 먼저 s의 길이가 4,6이라는 조건을 설정해주고, 이 s가 정수인지 아닌지를 알아봐야한다. 이때 try문을 사용하여 s가 Integer.parseInt(s)를 통해 정수로 바뀌어진다면 true를 반환하고, 아닌 경우는 모조리 catch문을 통해 false로 반환하면 된다. 소스 코드 class Solution { public boolean solution(String s) { if(s.length.. 2023. 8. 7.
JAVA 프로그래머스 [부족한 금액 계산하기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 위클리 챌린지 -> 부족한 금액 계산하기 https://school.programmers.co.kr/learn/courses/30/lessons/82612 해결 과정 타려는 놀이기구에 총 값은 price에 count만큼 곱해준 것을 합한 것으로 생각하면 된다. 먼저 총 지불 금액을 total 변수로 만들어 주고, 반목문을 이용해서 total += price * i 를 계산해준다. 여기서 부족한 돈은 total-money 가 된다. 여기서 만약 돈이 부족하지 않으면 0을 return 해주는 조건문만 추가로 달아주면 된다. 소스 코드 class Solution { public long solution(int price, int money, int count) { long.. 2023. 8. 7.
JAVA 프로그래머스 [문자열 내림차순으로 배치하기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 문자열 내림차순으로 배치하기 https://school.programmers.co.kr/learn/courses/30/lessons/12917 해결 과정 먼저 문제를 보자마자 아스키코드의 숫자를 떠올릴 수 있다. 우선 char 배열 list 를 만들어주고, .charAt()을 사용하여 list에 문자들을 넣어주었다. 그리고 Arrays.sort()를 사용하여 list의 원소들을 오름차순 해주었다. 이제 answer을 정리해줘야 하는데, 반복문을 이용하여 list의 원소들을 Character.toString으로 바꾼 값들을 answer에 넣어야 한다. 여기서 우리는 내림차순이 필요하니, list 배열이 뒤 원소부터 거꾸로 반복해 주면 된다. 소스 코드 i.. 2023. 8. 7.
JAVA 프로그래머스 [약수의 개수와 덧셈] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 월간 코드 챌린지 시즌2 -> 약수의 개수와 덧셈 https://school.programmers.co.kr/learn/courses/30/lessons/77884 해결 과정 이 문제는 left부터 right까지 중 짝수개의 약수를 갖는 수들의 합을 구하면 된다. 먼저 이중 for문을 사용하여 약수의 개수를 변수 a를 이용하여 나타내준다. left부터 right 까지의 수를 i라고 표현하고, 나눠주는 수를 j라고 표현하면 i % j == 0 이 될 때 약수의 개수인 a를 ++해주면 된다. 약수의 개수를 구하는 반복문을 벗어나면, 이 a 가 짝수인지 홀수인지 판별하는 반복문을 만들어 짝수일 경우에는 answer += i 를 해주고 홀수일 경우에는 answer -= i .. 2023. 8. 6.
JAVA 프로그래머스 [내적] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 월간 코드 챌린지 시즌1 -> 내적 https://school.programmers.co.kr/learn/courses/30/lessons/70128 해결 과정 이 문제는 단순히 문제에 있는 공식을 이용하면 바로 풀린다. 반복문을 이용하여 각 인덱스 별로 두 배열을 곱한 값을 answer에 누적하여 더해주면 된다. 소스 코드 class Solution { public int solution(int[] a, int[] b) { int answer = 0; for (int i = 0; i 2023. 8. 5.
JAVA 프로그래머스 [수박수박수박수박수박수?] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 수박수박수박수박수박수? https://school.programmers.co.kr/learn/courses/30/lessons/12922 해결 과정 필자는 먼저 이 n이 짝수인지 홀수인지에 따라 조건을 나누어서 해결하였다. 우선 n이 짝수인 경우에는 n/2 만큼 "수박"을 answer에 누적하여 더해주었고, n이 홀수인 경우에는 n/2만큼 "수박"을 더해준거에 "수"를 answer에 추가로 더해주었다. 소스 코드 class Solution { public String solution(int n) { String answer = ""; if (n % 2 == 0) { for (int j=0; j 2023. 8. 5.
JAVA 프로그래머스 [가운데 글자 가져오기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 가운데 글자 가져오기 https://school.programmers.co.kr/learn/courses/30/lessons/12903 해결 과정 일단 이 두 문제의 경우 s의 길이가 짝수 일 경우와 아닐 경우 두 가지로 나누어서 해결해야 한다. 만약 s의 길이가 짝수일 떄는, s의 길이를 2로 나눈 값에 해당하는 인덱스 바로 앞의 자리와 해당하는 인덱스 두 문자를 answer에 넣어준다. 만약 s의 길이가 홀수일 때는, 문자 하나만 넣어주면 되므로 2로 나눈 값에 해당하는 인덱스인 문자만 넣어주면 된다. 소스 코드 class Solution { public String solution(String s) { String answer = ""; if (s.. 2023. 8. 5.
JAVA 프로그래머스 [제일 작은 수 제거하기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 제일 작은 수 제거하기 https://school.programmers.co.kr/learn/courses/30/lessons/12935 해결 과정 처음에는 배열에서 어떤 원소를 제거해야 한다고 하여, StringBuilder를 써야 하나 싶었다. 하지만 사용하지 않고 한번 풀어봤더니 풀리는 방법을 찾을 수 있었다. 먼저 arr의 길이가 1일 경우를 먼저 제거해 준다. 이때는 answer 배열을 그냥 -1만 갖도록 초기화 해주면 된다. 다음 위 조건이 걸리지 않았을 때의 answer 배열을 다시 선언해 주는데, 이때 배열의 길이는 arr의 길이에서 원소 하나가 제거된 길이일 것이므로 -1을 해준다. 또한 제일 작은 값을 찾기 위해 arr의 원소 중 하나.. 2023. 8. 4.
JAVA 프로그래머스 [없는 숫자 더하기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 월간 코드 챌린지 시즌3-> 없는 숫자 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/86051 해결 과정 이 문제는 이해하면 간단한 문제다. 본래는 단순히 number[i]에 없는 숫자를 따로 빼서 answer에 더할 생각이었지만, 구조적인 부분에서 쉽게 해결이 되지 않아서 문제를 다시 읽어보았더니 numbers의 원소는 모두 다르다는 점이었다. 결국 numbers에 속하지 않은 0부터9까지의 숫자를 더하는 것인데, 이것을 반대로 생각해보면 0부터9까지의 합에서, numbers에 들어가는 숫자는 빼면 되는 것이다. 이 생각을 기초로 하여, 일단 가독성을 위해 0부터 9까지의 합을 hap 이라는 변수에 .. 2023. 8. 4.
JAVA 프로그래머스 [핸드폰 번호 가리기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 핸드폰 번호 가리기 https://school.programmers.co.kr/learn/courses/30/lessons/12948 해결 과정 이 문제의 풀이는 생각 보다 간단하다. 뒤에 4자리만 보여지면 되는데, 반대로 생각하면 뒤에서 4자리 전까지는 "*"로 나타내면 되는 것이다. 두 개의 for문을 사용하여 해결할 수 있다. 첫 번째 for문에서는 "*"을 채우기 위해 0부터 phone_number()-4 전까지 단위를 잡아 해당하는 길이만큼 "*"을 answer에 추가해주면 된다. 두번 째 for문에서는 그 다음에 올 숫자 4자리를 채우면 되기 때문에 phone_number()-4 부터 phone_number() 전까지로 반복 범위를 잡고 .c.. 2023. 8. 3.
JAVA 프로그래머스 [음양 더하기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 월간 코드 챌린지 시즌2 -> 음양 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/76501 해결 과정 문제를 보자마자 후딱 풀어버렸다. 해결방법은 엄청 쉽다. signs 값에 따라 더하기 or 빼기만 판별해주면 된다. 전체적으로 반복문을 돌리면서 signs[i] == true 일때는 answer값에 absolutes[i] 값을 더하면 되고, signs[i] == true 일때는 answer값에 absolutes[i] 값을 빼주면 되다 소스 코드 class Solution { public int solution(int[] absolutes, boolean[] signs) { int answer = 0; .. 2023. 8. 3.
JAVA 프로그래머스 [나누어 떨어지는 숫자 배열] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 나누어 떨어지는 숫자 배열 https://school.programmers.co.kr/learn/courses/30/lessons/12910 해결 과정 소스 코드 import java.util.Arrays; class Solution { public int[] solution(int[] arr, int divisor) { int num = 0; Arrays.sort(arr); for (int i = 0; i 2023. 8. 3.
JAVA 프로그래머스 [서울에서 김서방 찾기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 서울에서 김서방 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/12919 해결 과정 먼저 index 변수를 선언해준다. 그리고 반복문을 돌면서 배열 seoul에 "Kim" 이랑 같은 문자열을 .equals() 로 찾아주고 그 때의 i 값을 index로 설정해준다. 이제 answer 문자열을 "김서방은 " + Integer.toString(idex) + "에 있다" 이렇게 해주면 모두 String 형이므로 문자열로 출력된다. 그 결과 문제에 제시된 답처럼 나오는 것을 확인할 수 있다. 소스 코드 class Solution { public String solution(String[] seoul).. 2023. 8. 3.
728x90
반응형