본문 바로가기
728x90
반응형

EVERYTHING196

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.
JAVA 프로그래머스 [콜라츠 추측] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 콜라츠 추측 https://school.programmers.co.kr/learn/courses/30/lessons/12943 해결 과정 우선 num 가 1이 될 때 return 0을 바로 해주는 조건문을 먼저 삽입한다. 다음 본격적으로 while 반복문 루프를 돌면서 진행해보자. 먼저 풀이 횟수인 answer이 500 이상이되면 0을 바로 return 해주는 조건문을 만들고, 다음으로 짝수와 홀수를 구분해주며 각 공식에 따라 num를 계산해준다. 이 조건문이 끝나면 answer++을 하여 풀이 횟수를 하나씩 높여주고, 여기서 만약 num가 1이 되어 콜라츠 추측을 완성한다면 그 때의 answer 값을 return 해주면 된다. 하지만 예시로 나온 62.. 2023. 8. 2.
JAVA 프로그래머스 [두 정수 사이의 합] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 두 정수 사이의 합 https://school.programmers.co.kr/learn/courses/30/lessons/12912 해결 과정 풀이는 생각보다 간단하다. 우선 a==b일때는 단순히 a의 값(b 동일) 을 return 해주면 되는데, answer을 long형으로만 변환을 해주면 된다. 다음으로 a>b 인 경우를 생각해보자. a부터 b까지 하나씩 -1을 해주면서 answer에 i값을 누적하여 더해주면된다. 그리고 나머지의 경우에는 a부터 b까지 하나씩 +1을 해주면서 answer에 i값을 누적하여 더해주면된다. 소스 코드 class Solution { public long solution(int a, int b) { long answer .. 2023. 8. 2.
JAVA 프로그래머스 [하샤드 수] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 하샤드 수 https://school.programmers.co.kr/learn/courses/30/lessons/12947 해결 과정 이 문제를 보고, 자릿수 더하기에 사용했던 풀이를 사용해보기로 했다. https://tripleup.tistory.com/142 JAVA 프로그래머스 [자릿수 더하기] 자바 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 자릿수 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/120906 해결 과정 먼저 숫자를 문자열로 바꾼 후 split을 이용하여 문자열 배열 arra tripleup.tistory.com 먼저 answer을 false로 해놓고 .. 2023. 8. 2.
JAVA 프로그래머스 [정수 내림차순으로 배치하기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 정수 내림차순으로 배치하기 https://school.programmers.co.kr/learn/courses/30/lessons/12933 해결 과정 이 문제를 보고 생각한 루트는 1. 정수 n을 문자열로 바꾼다 2. 문자열 각 문자를 정수로 변환하여 정수 배열을 만든다 3. 배열을 sort한다 4. 1의 자리부터 answer에 자릿수를 계산하여 더해준다 이렇게 였다. 1. 우선 정수 n을 문자열 s 로 바꿔준다. String s = String.valueOf(n); 2. 다음 정수 배열 list를 만들어 문자열 길이만큼 크기를 정해주고, 반복문을 이용하여 list에 정수형으로 변환한 값을 넣어준다. for (int i=0; i 2023. 8. 1.
JAVA 프로그래머스 [문자열을 정수로 바꾸기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 문자열을 정수로 바꾸기 https://school.programmers.co.kr/learn/courses/30/lessons/12925 해결 과정 우선 이 문제의 경우 3가지로 조건을 나누어야 한다. 1. 맨앞이 부호 "-" 일 때 2. 맨앞이 부호 "+" 일 때 3. 맨앞에 부호가 없을 때 (숫자로 시작할 때) if (s.charAt(0) == '-') { } else if (s.charAt(0) == '+') { } else { } 위와 같이 조건문에서는 s.charAt(0) 을 이용해 준다. 1. 맨앞이 부호 "-" 일 때 for (int i=1; i 마찬가지로 1번과 같이 수행하고, 대신 -1을 곱하는 부분이 필요없다. 3. 맨앞에 부호가 없을.. 2023. 8. 1.
JAVA 프로그래머스 [정수 제곱근 판별] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 정수 제곱근 판별 https://school.programmers.co.kr/learn/courses/30/lessons/12934 해결 과정 먼저, 이 문제는 제곱과 제곱근의 관한 문제이므로 Math.sqrt(n) 과 Math.pow(a,b)를 적절하게 사용해야 한다. 먼저 n의 제곱근이라고 할 수 있는 x를 double형으로 선언해준다. 그리고 조건문을 이용하여 이 제곱근을 1으로 나누었을 때 나머지가 0이 된다면 소수점이 없는 것이므로 n은 어떤 수 x의 제곱이 맞다. 그러므로 Math.pow(x+1,2)를 long형으로 형변환하여 answer에 넣어준다. 아닐경우에는 answer = -1을 해주고 answer을 return 해주면 된다. 소스 코.. 2023. 8. 1.
JAVA 프로그래머스 [문자열 내 p와 y의 개수] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 문자열 내 p와 y의 개수 https://school.programmers.co.kr/learn/courses/30/lessons/12916 해결 과정 우선 answer값이 true로 초기화되어 있으므로, answer이 false가 되는 경우에 집중을 하면 된다. 먼저 p와 y의 개수를 새기 위한 변수 a,b를 만들어주고, 반복문과 조건문을 이용하여 a++, b++을 처리해준다. 이때 대소문자는 구분하지 않는다고 하여 필자는 or조건을 이용하여 소문자일 경우와 대문자일 경우를 같이 처리하였다. 그렇게 해서 a와 b가 같지 않을 때, answer = false라는 조건을 걸어준다면 문제가 모두 해결 된다. 소스 코드 class Solution { bool.. 2023. 8. 1.
JAVA 프로그래머스 [자연수 뒤집어 배열로 만들기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> 자연수 뒤집어 배열로 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/12932 해결 과정 먼저 자연수 자릿수를 알아야 배열 answer의 길이를 설정할 수 있다. 자연수의 자릿수는 (int)(Math.log10(n)+1) 로 알 수 있다. 그렇게 answer배열의 길이를 설정해주고, 인덱스의 역할을 해줄 int k를 선언한다. 그리고 answer의 길이만큼 반복문을 돌면서 answer[k] 에 n을 10으로 나눈 나머지를 int형으로 형변환해준다. n은 10을 나눈수로 다시 업데이트 해주고, k++를 해주면서 answer배열에 값을 하나씩 넣어주면 된다. 소스 코드 class Solutio.. 2023. 7. 31.
JAVA 프로그래머스 [나머지가 1이 되는 수 찾기] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 월간 코드 챌린지 시즌3 ->나머지가 1이 되는 수 찾기 hthttps://school.programmers.co.kr/learn/courses/30/lessons/87389 해결 과정 먼저 제일 작은 x를 찾아야 하므로, 반복문에서 n부터 0으로 거꾸로 내려온다. i-- 로 진행하면서, 조건에 맞을 때, answer에 i를 계속 업데이트 시켜준다. 최종적으로 나온 i의 값이 제일 작은 x가 된다. 소스 코드 class Solution { public int solution(int n) { int answer = 0; for (int i=n ; i>0; i--) { if (n%i == 1) { answer = i; } } return answer; } } 2023. 7. 31.
JAVA 프로그래머스 [x만큼 간격이 있는 n개의 숫자] 자바 Lv.1 [프로그래머스] 코딩테스트 연습 -> 연습문제 -> x만큼 간격이 있는 n개의 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12954 해결 과정 먼저 배열 answer 의 길이를 n으로 지정해준다. 그리고 반복문을 돌면서 answer[i]에 x * (i+1)을 넣어주면 된다. 처음에는 단순히 answer[i] = x * (i+1); 로 진행하였는데 테스트 13,14에서 자꾸 실패가 나왔다. 이유를 모르겠어 질문게시판을 통해 접근해보니, 형변환 문제 였다. x의 경우 int형 매개변수 이기 때문에 long 배열 때문에, long으로의 형변환이 필요하다. 그래서 x앞에 (long)을 붙혀서 answer[i] = (long) x * (i+1) 으.. 2023. 7. 31.
728x90
반응형