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
'코딩테스트 > programmers' 카테고리의 다른 글
프로그래머스 [#8] 코딩테스트 연습 JAVA - 8 (0) | 2023.01.11 |
---|---|
프로그래머스 [#7] 코딩테스트 연습 JAVA - 7 (0) | 2023.01.05 |
프로그래머스 [#4] 코딩테스트 연습 JAVA - 4 (0) | 2022.12.07 |
프로그래머스 [#3] 코딩테스트 연습 JAVA - 3 (0) | 2022.12.01 |
프로그래머스 [#2] 코딩테스트 연습 JAVA - 2 (0) | 2022.11.23 |
댓글