본문 바로가기
코딩테스트/programmers

프로그래머스 [#5] 코딩테스트 연습 JAVA - 5 -(only Lv 2)

by 8Antony 2022. 12. 15.

 

 

1. 최댓값과 최솟값

 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

import java.util.ArrayList;

class Solution {
    public String solution(String s) {
        String answer = ""; //초기화 
        
        String[] ss = s.split(" "); //문자열 배열에 담기 
        ArrayList<Integer> arr = new ArrayList<>(); //Int로 바꿔 담을 배열 생성 
        
        for (int i=0; i<ss.length; i++) {
            arr.add(Integer.parseInt(ss[i]));
        }
        
        arr.sort(null); //초기화
        answer += arr.get(0); // 최소값
        answer += " "; //띄어쓰기 
        answer += arr.get(ss.length -1); //최대값
        
        return answer;
        
    }
}

 

 

 

2. JadenCase 문자열 만들기 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12951

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] ss = s.toLowerCase().split(""); //String을 소문자로 바꾸고, 띄어쓰기 해제 
        boolean b = true;
        
        for(String temp : ss) {
            answer += b ? temp.toUpperCase() : temp; //answer 는 b가 true면 대문자 변경 : 아니면 다시 for문 
            b = temp.equals(" ") ? true : false; //첫번째가 공백이면 true해서 위에행 따라 대문자 변경 : 아니면 false
        }
        
        return answer;
    }
}

 

 

 

3. 최솟값 만들기 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12941

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

import java.util.*;

class Solution
{
    public int solution(int []A, int []B)
    {
        int answer = 0;
        
        Arrays.sort(A);
        Arrays.sort(B);
        
        for (int i=0; i<A.length; i++) {
            answer += A[i]*B[A.length - i -1]; //정렬하면 오름차순 최소 : A[i], 최대 A[A.length -i -1];
        }

        return answer;
    }
}

 

 



4. 올바른 괄호 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

 

import java.util.*;

class Solution {
    boolean solution(String s) {
        boolean answer = true;

        Stack<Character> stack = new Stack<Character>();
        for(int i=0; i<s.length(); i++) { //배열아니면 s.length() 붙이기
        if(s.charAt(i) == '(') {
                stack.push('(');
            }
        else {
            if(stack.isEmpty()) { // )시작하면
                return false;
            } else {
                stack.pop(); //아니면 뺀다
            }
        }
        }
        if(stack.isEmpty()) return true; // )로 끝나면 리턴
        else return false;
    }
}

   

 

 

 

5. 이진 변환 반복하기 

 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/70129

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

 

class Solution{
    public int[] solution(String s){
        int[] answer = new int[2];
        while(true){
            if(s.equals("1")){
                break;
            }
            int temp = s.length();
            s = s.replace("0","");
            answer[1] += temp - s.length();
            s = Integer.toBinaryString(s.length());
            answer[0] += 1;
        }
        return answer;
    }
}

 

 

 

 


 

 

Appendix

 

 

ArrayList

배열에서 조작이 필요할 경우 사용 

 

my case) String List -> int List로 바꿔 정렬이 필요했음

 

1. import java.util.*; 

2. ArrayList<Integer> arr = new ArrayList<>(); //정수형 배열 생성
3. arr.add(Integer.parseInt(ss[i]); //ArrayList에 값을 넣을때는 add

 



문자열 (Uppercase, lowercase)

 

toUpperCase : 대상 문자열을 대문자로 변환

toLowerCase : 대상 문자열을 소문자로 변환 

 

my case) 문자열 배열을 만들고, 소문자 변환, 띄어쓰기 빼기 -> String[] ss = s.toLowerCase().split("");

 

 

 

Stack

 

원소들을 배열에 쌓아 넣을 때 사용 

 

my case) 

 

 

1. Stack<Character> stack = new Stack<>(); //선언
2. if(s.charAt(i) == '(') //원소가 (면 (
3. stack.push(s.charAt(i)); //스택에 넣기
4. else { // )면
5. if(stack.isEmpty()) { // )인데 스택이 empty 면 잘못된거니 
return false;
}
stack.pop(); // 스택이 비어있지 않으면 스택에 '('가 있다는 의미니 빼주기

 

 

// stack에 값 제거

stack.pop();       

// stack의 전체 값 제거 (초기화)

stack.clear();     

// stack의 가장 상단의 값 출력 

stack.peek();

 

 

 

answer  +=  b ? m : n ;

b = m ? true : false ;

 

1. b가 m이면 answer에 계속 더한다 

2. b가 m이면 true, 아니면 false

 

 

 

toBinaryString

 

 

 

 

 

댓글