프로그래머스 9

[ 프로그래머스 ] 올바른 괄호 - Java

1. 문제 설명 2. 문제 풀이 핵심이라 생각하는 점 stack의 개념 :가장 최근에 들어간 데이터가 가장 먼저 나오는 후입선출(Last In First Out)의 구조 stack 함수 : push(), pop(), imEmpty() 닫는 괄호로 시작하는 경우 처리 필요 ( 비정상적으로 시작하는 경우 처리 ) stack을 사용 안 하고 풀이하는 방법도 체크해 보기 3. 정답 코드 확인 및 활용 메소드 체크 3-1 : 정답 코드 확인 import java.util.*; class Solution { boolean solution(String s) { boolean answer = true; Stack bracket = new Stack(); for (int i = 0; i < s.length(); i++)..

Programmers 2023.01.19

[ 프로그래머스 ] 최소 직사각형 - Java

1. 문제 설명 2. 문제 풀이 핵심이라 생각하는 점 길이가 긴 값들 중 가장 큰 값, 길이가 작은 값들 중 가장 큰 값 각각의 명함들의 가로와 세로길이 중 긴 쪽을 가로로 재배치 가로값 = paramMax 변수로, 세로값은 = paramMin 변수로 비교 가로값 중 최댓값, 세로값 중 최댓값 최댓값을 모아놓고 그중 최댓값, 최솟값을 모아놓고 그중 최댓값 3. 정답 코드 확인 및 활용 메소드 체크 3-1 : 정답 코드 확인 class Solution { public int solution(int[][] sizes) { int max = 0; int min = 0; for (int[] size : sizes) { int paramMax = Math.max(size[0], size[1]); int param..

Programmers/JAVA 2023.01.14

[ 프로그래머스 ] JadenCase 문자열 만들기 - Java

1. 문제 설명 2. 문제 풀이 핵심이라 생각하는 점 소문자로 만든다 -> 공백을 기준으로 문자열 배열 얻는다 -> 맨 앞글자를 대문자로 바꿔준다. 쉬웠다.. 하지만 여러 가지 고려할 상황들을 추가해주어야 하였다. 공백이 연속으로 나오면 결괏값에도 공백이 연속으로 나오도록 해주어야 한다. 주어진 문자열의 마지막이 공백으로 끝난다면 공백으로 출력되도록 해주어야 한다. 이 점만 생각해서 풀이하면 풀이가 쉬워질 것 같다. 3. 정답 코드 확인 및 활용 메소드 체크 3-1 : 정답 코드 확인 class Solution { public String solution(String s) { String answer = ""; //소문자로 만들고 공백 기준으로 문자배열 얻기 s = s.toLowerCase(); Stri..

Programmers/JAVA 2023.01.10

[ 프로그래머스 ] 마법의 엘리베이터 - Java

1. 문제 설명 2. 문제 풀이 핵심이라 생각하는 점 엘리베이터 버튼은 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수들이라는 점 더해서 10을 만들던지 / 빼서 0을 만들던지 해야 하는데 10을 만들면 위의 자릿수는 +1 된다는 점과 값이 5일 때의 처리가 관건 5보다 작다면 빼서 0을 만드는 것이 최소 횟수 일 것이고 5보다 크다면 더해서 10을 만드는 것이 최소 횟수 일 것이다. 5일 때는? - 한 자릿수 높은 값을 체크해보아야한다. ( 일의 자리면 십의 자릿수 체크 ) 한 자릿수 높은 값이 5보다 크거나 같다면? 10을 만들어 주는 것이 좋다. ( 수 증가로 더하는 횟수 감소 ) 한 자릿수 높은 값이 5보다 작다면? 0을 만들어 주는 것이 좋다. ( 빼는 횟수 감소 ) 3. 정답 코드 확인 및..

Programmers/JAVA 2023.01.06

[ 프로그래머스 ] 숫자 문자열과 영단어 - Java

1. 문제 설명 2. 문제 풀이 핵심이라 생각하는 점 숫자에 대응되는 영단어 처리 영단어를 숫자로 바꾸는 것이므로 변경 방법 생각 0~9까지 10개라는 점 체크 및 형 변환 체크 3. 정답 코드 확인 및 활용 메소드 체크 3-1 : 정답 코드 확인 replaceAll() 과 replace를 활용하여 풀이 class Solution { public int solution(String s) { String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for(int i = 0; i < strArr.length; i++) { s = s.replaceAll(strArr[i], Integer.t..

Programmers/JAVA 2023.01.06

[ 프로그래머스 ] 비밀지도 - Java

1. 문제 설명 2. 문제 풀이 핵심이라 생각하는 점 2진수 변환 개념 2개의 지도에서 1개라도 막혀있으면 #으로 표시 막혀있는 기준은 2진수로 표현하였을 시 그 칸의 값이 1이라면 막혀있다고 표시됨 즉, 해당 자리 수의 값을 2로 나눈 나머지가 0이 아니라면 막혀있는 것(#)이라고 이라고 판단해서 풀이함 3. 정답 코드 확인 및 활용 메소드 체크 3-1 : 정답 코드 확인 StringBuilder.append() : 사용했더니 기본 문자열의 뒤로 붙여지는 문제점 만남 StringBuilder.insert(index, value)를 사용하여서 해결 class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answ..

Programmers/JAVA 2023.01.06

[ 프로그래머스 ] 모의고사 - Java

1. 문제 설명 2. 문제 풀이 핵심이라 생각하는 점 제출한 정답 번호를 가지고 - 수포자 패턴 번호에 맞춰서 채점해 주기 수포자의 패턴만큼 반복됨으로 1번 수포자의 경우 5개의 패턴으로 - 8번 정답과 비교하기 위해서는 8%5 = 3 ->> 패턴의 3번째 값과 비교해야 한다. 3. 정답 코드 확인 및 활용 메소드 체크 3-1 : 정답 코드 확인 import java.util.*; class Solution { public int[] solution(int[] answers) { //수포자 패턴 int[] person1 = {1,2,3,4,5}; int[] person2 = {2,1,2,3,2,4,2,5}; int[] person3 = {3,3,1,1,2,2,4,4,5,5}; //정답 수 체크 배열 in..

Back-end/JAVA 2023.01.06

[ 백준허브 ] 내가 풀이한 알고리즘 문제를 자동으로 GitHub에 Commit!

지금까지 풀이했던 알고리즘 문제들을 다른 방법으로 풀어보거나 더 좋은 성능으로 풀어보기 위해 다시 한번 살펴보고 싶었다. 문제들을 하나하나 체크하는 방법이 아닌 조금 더 쉽게 확인해볼 방법은 없을까라는 생각에 구글 검색을 해보았고 '백준허브' 오픈소스를 알게 되었다. 내가 앞으로 제출하고 풀이하는 문제들 뿐만 아니라 이미 제출하여 풀이한 문제들도 크롬 플러그인 설치 후 GitHub와 연동시켜놓으면 자동으로 commit을 해주는 라이브러리였다. 백준뿐만이 아니라 프로그래머스의 문제들도 지원해주었다. 이를 활용하여 내가 어떤 방법으로 어떻게 풀이했는지 편리하게 확인이 가능하였다. 감사합니다. ㅎㅎㅎ 다만.. codeup 사이트의 문제풀이는 지원되지 않았다. 그럼 설치 방법과 활용법을 간단히 살펴보자! 0. ..