2024. 4. 15. 00:10ㆍ코딩테스트 리뷰(프로그래머스)/코딩 기초 트레이닝 with Java
문제.1 - 간단한 논리 연산
https://school.programmers.co.kr/learn/courses/30/lessons/181917
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 boolean 변수 x1, x2, x3, x4가 매개변수로 주어질 때, 다음의 식의 true/false를 return 하는 solution 함수를 작성해 주세요. - ( x1 V x2 ) ^ ( x3 V x4 ) |
class Solution {
public boolean solution(boolean x1, boolean x2, boolean x3, boolean x4) {
boolean answer = true;
answer = (x1 || x2) && (x3 || x4);
return answer;
}
}
문제.2 - 주사위 게임 3
https://school.programmers.co.kr/learn/courses/30/lessons/181916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 1부터 6까지 숫자가 적힌 주사위 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다. - 네 주사위에서 나온 숫자가 모두 p로 같다면 1111 x p 의 점을 얻습니다. - 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p != q) 라면 (10 * p + q) ^ 2 점을 얻습니다. - 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q( p != q ) 라고 한다면 ( p + q ) * | p - q | 점을 얻습니다. - 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r( q != r ) 이라면 q * r 점을 얻습니다 - 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다. 네 주사위를 굴렸을 때 나온 숫자가 정수 매개변수 a, b, c, d로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해주세요. |
class Solution {
public int solution(int a, int b, int c, int d) {
double answer = 0;
int count = 0;
// 4개의 주사위가 같은 경우
if ( a == b && b == c && c == d ) answer = 1111 * a;
// 3개의 주사위가 같은 경우
else if ( b == c && c == d ) answer = Math.pow((10 * b + a), 2); // a 만 다를 때
else if ( a == c && c == d ) answer = Math.pow((10 * a + b), 2); // b 만 다를 때
else if ( a == b && b == d ) answer = Math.pow((10 * a + c), 2); // c 만 다를 때
else if ( a == b && b == c ) answer = Math.pow((10 * a + d), 2); // d 만 다를 때
// 2개씩 같은 경우
else if ( ( a == b ) && ( c == d) ) answer = ( a + c ) * Math.abs( b - d );
else if ( ( b == c ) && ( a == d) ) answer = ( b + a ) * Math.abs( c - d );
else if ( ( a == c ) && ( b == d) ) answer = ( a + b ) * Math.abs( c - d );
// 2개의 주사위만 같은 경우
else if ( a == b ) answer = c * d;
else if ( a == c ) answer = b * d;
else if ( a == d ) answer = b * c;
else if ( b == c ) answer = a * d;
else if ( b == d ) answer = a * c;
else if ( c == d ) answer = a * b;
// 모두 다르게 나온 경우
// Find_minimum
else {
answer = Math.min( a, b);
answer = Math.min( answer, c);
answer = Math.min( answer, d);
}
return (int)answer;
}
}
잘 모르겠어서 길게 짰습니다.
문제.3 - 글자 이어 붙여 문자열 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/181915
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해주세요. |
class Solution {
public String solution(String my_string, int[] index_list) {
String answer = "";
String[] str = my_string.split("");
for ( int index : index_list ) {
answer += str[index];
}
return answer;
}
}
문제.4 - 9로 나눈 나머지
https://school.programmers.co.kr/learn/courses/30/lessons/181914
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다. 이 사실을 이용하여 음이 아닌 정수가 문자열 number로 주어질 때, 이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해주세요. |
class Solution {
public int solution(String number) {
String[] num = number.split("");
int result = 0;
for ( String n : num ) {
result += Integer.valueOf(n);
}
return result %= 9;
}
}
문제.5 - 문자열 여러 번 뒤집기
https://school.programmers.co.kr/learn/courses/30/lessons/181913
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s,e]형태로 ,my_string의 인덱스 s부터 인덱스 e까지 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution함수를 작성해주세요. |
class Solution {
public String solution(String my_string, int[][] queries) {
String[] str = my_string.split("");
for ( int[] query : queries ) {
for ( int i = query[0]; i <= (query[1] + query[0]) / 2 ; i++ ) {
String temp = str[i];
str[i] = str[query[1] + query[0] - i];
str[query[1] + query[0] - i] = temp;
}
}
return String.join("",str);
}
}
문제 해설
해당 문제는 각 쿼리에 있는 숫자 s ~ e 까지 전부 뒤집으라는 말입니다.
만약에 0 ~ 7 까지라면 0의 숫자와 7의 숫자가 바뀌고 1 과 6, 2 와 5, 3 과 4 가 바뀌게 되어 총 4번을 바꾸면 됩니다.
그래서 2번째 for문에서 시작을 query 0에서 시작 마지막 을 0 + 7 / 2를 한 숫자 까지 하게 됩니다.
그 다음까지 전부 바꿔주는 역활이고 마지막으로 배열을 합쳐서 돌려줍니다.
느낀점
매번 이렇게 기초만 하는 데 , 배우는 것이 많네요
다른 사람들이 풀은 것도 보면서 배우고 찾아보면서 배우고 그러네요
'코딩테스트 리뷰(프로그래머스) > 코딩 기초 트레이닝 with Java' 카테고리의 다른 글
코딩 기초 트레이닝 Day 10 with Java (3) | 2024.05.10 |
---|---|
코딩 기초 트레이닝 Day 9 with Java (0) | 2024.05.08 |
코딩 기초 트레이닝 Day 7 with Java (4) | 2024.04.03 |
코딩 기초 트레이닝 Day 6 with Java (2) | 2024.03.07 |
코딩 기초 트레이닝 Day 5 with Java (2) | 2024.03.04 |