https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc&languages=java
Day 4 - 연산, 조건문
- n의 배수
class Solution {
public int solution(int num, int n) {
return (num % n == 0) ? 1 : 0;
}
}
- 공배수
class Solution {
public int solution(int number, int n, int m) {
return (number % n == 0 && number % m == 0 ) ? 1:0;
}
}
- 홀짝에 따라 다른 값 반환하기
import java.util.stream.IntStream;
class Solution {
public int solution(int n) {
return n%2==0?
IntStream.range(0,n+1).filter(num-> num % 2 == 0).map(num-> num*num).sum():
IntStream.range(0,n+1).filter(num-> num % 2 == 1).sum();
}
}
- 조건 문자열
class Solution {
public int solution(String ineq, String eq, int n, int m) {
boolean answer=true;
if(ineq.equals("<")){
if(eq.equals("=")){
answer = (n<=m);
}else{
answer = (n<m);
}
}else{
if(eq.equals("=")){
answer = (n>=m);
}else{
answer = (n>m);
}
}
return answer == true?1:0;
}
}
- flag에 따라 다른 값 반환하기
class Solution {
public int solution(int a, int b, boolean flag) {
return flag?a+b:a-b;
}
}
Day 5 - 조건문
- 코드 처리하기
class Solution {
public String solution(String code) {
String answer = "";
int mode = 0;
for(int idx=0;idx<code.length();idx++){
if(mode == 0){
if(! (code.charAt(idx) == '1')){
if(idx %2 == 0) {answer+=code.charAt(idx);}
}else{
mode = 1;
}
}else{
if(! (code.charAt(idx) == '1')){
if(idx %2 != 0) {answer+=code.charAt(idx);}
}else{
mode = 0;
}
}
}
return answer.equals("")?"EMPTY":answer;
}
}
- 등차수열의 특정한 항만 더하기
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+=(d*i+a);
}
}
return answer;
}
}
import java.util.stream.IntStream;
class Solution {
public int solution(int a, int d, boolean[] included) {
return IntStream.range(0,included.length).map(idx -> included[idx]?a+(idx*d):0).sum();
}
}
- 주사위 게임 2
import java.util.*;
class Solution {
public int solution(int a, int b, int c) {
if(a==b && b==c){
return (int) ((a+b+c)*(Math.pow(a,2)+Math.pow(b,2)+Math.pow(c,2))*(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)));
}else if(a==b || b==c || a==c){
return (int) ((a+b+c)*(Math.pow(a,2)+Math.pow(b,2)+Math.pow(c,2)));
}else{
return (a+b+c);
}
}
}
- 원소들의 곱과 합
import java.util.stream.*;
import java.util.Arrays;
class Solution {
public int solution(int[] num_list) {
return Math.pow(Arrays.stream(num_list).sum(),2) > Arrays.stream(num_list).reduce(1,(a,b)->a*b)?1:0;
}
}
- 이어 붙인 수
import java.util.stream.*;
import java.util.Arrays;
class Solution {
public int solution(int[] num_list) {
return Integer.parseInt(Arrays.stream(num_list).filter(x->x%2==0).mapToObj(String::valueOf).collect(Collectors.joining()))
+ Integer.parseInt(Arrays.stream(num_list).filter(x->x%2!=0).mapToObj(String::valueOf).collect(Collectors.joining()));
}
}
Day 6 - 조건문, 반복문
- 마지막 두 원소
import java.util.Arrays;
import java.util.stream.*;
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
List<Integer> tmp = Arrays.stream(num_list).boxed()
.collect(Collectors.toList());
tmp.add(num_list[num_list.length-2] >= num_list[num_list.length-1] ? num_list[num_list.length-1]*2 : num_list[num_list.length-1] - num_list[num_list.length-2]);
return tmp.stream().mapToInt(Integer::intValue).toArray();
}
}
- 수 조작하기 1
class Solution {
public int solution(int n, String control) {
for(char c : control.toCharArray()){
if(c=='w'){n+=1;}
else if(c=='s'){n-=1;}
else if(c=='d'){n+=10;}
else{n-=10;}
}
return n;
}
}
class Solution {
public int solution(int n, String control) {
return control.chars().reduce(n,(acc,c) -> acc + (c=='w'?1 : c=='s' ? -1 : c == 'd' ? 10 : -10));
}
}
- 수 조작하기 2
import java.util.Arrays;
import java.util.*;
class Solution {
public String solution(int[] numLog) {
String answer = "";
for(int i=0;i<numLog.length-1;i++){
switch (numLog[i+1] - numLog[i]){
case 1:
answer+="w";
break;
case -1:
answer+="s";
break;
case 10:
answer+="d";
break;
case -10:
answer+="a";
break;
}
}
return answer;
}
}
- 수열과 구간 쿼리 3
class Solution {
public int[] solution(int[] arr, int[][] queries) {
for(int[] q : queries){
int tmp = arr[q[0]];
arr[q[0]] = arr[q[1]];
arr[q[1]] = tmp;
}
return arr;
}
}
- 수열과 구간 쿼리 2
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
for(int i=0;i<queries.length;i++){
int[] q = queries[i];
int m = 10000001;
for(int j=q[0];j<=q[1];j++){
if(arr[j] > q[2] && arr[j] < m){
m = arr[j];
}
}
answer[i] = m==10000001?-1:m;
}
return answer;
}
}
'코딩테스트 > JAVA' 카테고리의 다른 글
[JAVA] 프로그래머스 - 기초문제 Day11 (0) | 2023.11.09 |
---|---|
[JAVA] 프로그래머스 - 기초문제 Day10 (0) | 2023.11.07 |
[JAVA] 프로그래머스 - 기초문제 Day8 ~ Day9 (0) | 2023.11.06 |
[JAVA] 프로그래머스 - 기초문제 Day7 (0) | 2023.11.03 |
[JAVA] 프로그래머스 - 기초문제 Day1 ~ Day3 (0) | 2023.10.30 |