2024. 3. 4. 08:24ㆍ코딩테스트 리뷰(프로그래머스)/코딩 기초 트레이닝 with Java
문제.1 - 코드 처리하기
https://school.programmers.co.kr/learn/courses/30/lessons/181932
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 - 문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1 이 있으며, idx를 0부터 code의 길이 -1까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.
문자열 code를 통해 만들어진 문자열 ret를 return 하는 solution 함수를 완성해 주세요. 단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 return 합니다. 제한사항
|
class Solution {
public String solution(String code) {
String ret = "";
String[] code_idx = code.split("");
for ( int idx = 0, mode = 0; idx < code_idx.length; idx++) {
boolean code_eq_1 = code_idx[idx].equals("1");
if( mode == 0 ) {
if( !code_eq_1 && idx % 2 == 0 ) ret += code_idx[idx];
if ( code_eq_1 ) mode = 1;
} else {
if( !code_eq_1 && idx % 2 != 0 ) ret += code_idx[idx];
if ( code_eq_1 ) mode = 0;
}
}
return ret == "" ? "EMPTY" : ret;
}
}
*code_eq_1은 code[idx]가 "1"과 같은지 확인하는 변수입니다.
문제.2 - 등차수열의 특정한 항만 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/181931
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자 설명 - 두 정수 a, d와 같이 길이가 n인 boolean배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i+1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해주세요. 제한사항
|
class Solution {
public int solution(int a, int d, boolean[] included) {
int answer = 0;
for ( int i = 0; i < included.length; i++) {
if ( included[i] ) answer += a + d * i ;
}
return answer;
}
}
문제.3 - 주사위 게임2
https://school.programmers.co.kr/learn/courses/30/lessons/181930
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 - 1부터 6까지 숫자가 적힌 주사위 세 개 있습니다. 세 주사위를 굴렸을 때, 나온 숫자를 각각 a,b,c라고 했을 때, 얻는 점수는 다음과 같습니다.
제한사항
|
class Solution {
public int solution(int a, int b, int c) {
double answer = 0;
if ( a != b && b != c && c != a) answer = a + b + c;
if ( a == b && b == c && c == a)
answer = (a + b + c) * ( a * a + b * b + c * c ) * (Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3));
if ( a == b && b != c || a != b && b == c || a == c && b != a )
answer = (a + b + c) * ( a * a + b * b + c * c );
return (int)answer;
}
}
풀이 설명
- 첫번째 조건문이 a, b, c 모두 다를 경우
- 두번째 조건문이 a, b, c 모두 같을 경우
- 세번째 조건문이 세 정수중 하나만 다를 경우
문제.4 - 원소들의 곱과 합
https://school.programmers.co.kr/learn/courses/30/lessons/181929
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 - 정수가 담긴 리스트 num_list 가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요. 제한사항
|
class Solution {
public int solution(int[] num_list) {
int sum_pow = 0;
int mul = 1;
for ( int num : num_list) {
sum_pow += num;
mul *= num;
}
sum_pow = (int) Math.pow(sum_pow, 2);
return mul > sum_pow ? 0 : 1;
}
}
문제.5 - 이어 붙인 수
https://school.programmers.co.kr/learn/courses/30/lessons/181928
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 - 정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요. 제한사항
|
class Solution {
public int solution(int[] num_list) {
int answer = 0;
String even = "";
String odd = "";
for ( int num : num_list ) {
if ( num % 2 == 0 ) odd += "" + num;
else even += "" + num;
}
answer = Integer.parseInt(even) + Integer.parseInt(odd);
return answer;
}
}
느낀점
생각보다 기초하기 시작하면서 알고만 있던것들 쓰게되거나, 기억안나는 것들도 다시 적어보면서 배우니까
재미있네요! 아침마다 하는 루틴이 된것같아서 뭐랄까 운동하는 느낌이 강하게 납니다 ㅋㅋㅋ
내일도 화이팅
'코딩테스트 리뷰(프로그래머스) > 코딩 기초 트레이닝 with Java' 카테고리의 다른 글
코딩 기초 트레이닝 Day 7 with Java (2) | 2024.04.03 |
---|---|
코딩 기초 트레이닝 Day 6 with Java (2) | 2024.03.07 |
코딩 기초 트레이닝 Day 4 with Java (0) | 2024.03.03 |
코딩 기초 트레이닝 Day 3 with Java (0) | 2024.03.01 |
코딩 기초 트레이닝 Day 2 with Java (0) | 2024.02.29 |