➜ 코딩 테스트/프로그래머스

프로그래머스 - 영어 끝말잇기 (JAVA)

문자열 처리 : 각 단어의 마지막 문자와 다음 단어의 첫 문자 비교 중복 단어 검사 : 이전에 말한 단어를 저장하고, 새 단어가 이미 사용된 단어인지 확인 참가자와 차례 계산 : 탈락자의 번호와 차례계산 문자열 비교 : substring() 메소드를 사용해 각 단어의 마지막 문자와 다음 단어의 첫 문자를 추출하는게 핵심 중복검사 : HashSet을 사용해서 이전에 사용된 단어를 저장하고, 새 단어가 이미 존재하는지 체크 탈락자 계산 : i % n 과 i / n 을 사용해서 각각 참가자 번호와 차례를 구한다 package Programmers; import java.util.*; public class ProgrammingBasic { public static void main(String[] args) ..

➜ 코딩 테스트/프로그래머스

프로그래머스 - 카펫 (JAVA)

카펫의 높이는 최소 3부터 시작해야된다. 왜냐면 높이가 3미만이면 브라운 타일로만 이루어진 가장자리를 만들 수 없다. 전체 타일수를 i로 나누었을 때 나머지가 0이면 일단 성립한다. 그 중 중앙의 옐로 타일 영역은 너비 -2 와 높이 -2 의 곱이다. 이 값이 yellow 타일 수와 같으면 정답을 찾은것 이므로 반복문을 중단한다. class Solution { public int[] solution(int brown, int yellow) { int total = brown + yellow; int width = 0; int height = 0; for(int i = 3; i

➜ 코딩 테스트

프로그래머스 - 카테고리 별 도서 판매량 집계하기 (MySQL)

SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES FROM BOOK B JOIN BOOK_SALES S ON B.BOOK_ID = S.BOOK_ID WHERE EXTRACT(YEAR FROM S.SALES_DATE) = 2022 AND EXTRACT(MONTH FROM S.SALES_DATE) = 1 GROUP BY B.CATEGORY ORDER BY B.CATEGORY 2022년 1월의 도서 판매량 정보를 필터링 한다. 판매량 정보를 BOOK테이블과 조인하여 카테고리 정보를 가져온다. 카테고리 별로 판매량을 합산하고 오름차순 정렬한다 BOOK과 BOOK_SALES 테이블을 BOOK_ID 기준으로 조인 SALES_DATE를 이용하여 2022년 1월의 판매 데이터만 필터링..

➜ 코딩 테스트/프로그래머스

프로그래머스 - 자동차 종류 별 옵션이 포함된 자동차 수 구하기 (MySQL)

SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%' GROUP BY CAR_TYPE ORDER BY CAR_TYPE;

➜ 코딩 테스트/프로그래머스

프로그래머스 - 짝지어 제거하기 (JAVA)

짝을 맞춰 제거하는 문제는 보통 stack을 활용하는 문제들이 많은것 같아서 바로 stack을 활용해서 풀었다. 모든 문자를 처리하는 과정에서 스택에 넣으려는 글자와 스택의 맨 위쪽 글자가 같으면 pop을 해주는 식으로 정리했고 스택이 남아있으면 0 아니면 1을 출력하는 조건문을 달고 풀 수 있었다! import java.util.*; class Solution { public int solution(String s) { Stack stack = new Stack(); for(int i = 0; i < s.length(); i++){ if(!stack.isEmpty() && stack.peek() == s.charAt(i)){ stack.pop(); } else { stack.push(s.charAt(i..

➜ 코딩 테스트/프로그래머스

프로그래머스 - 피보나치 수 (JAVA)

유명한 피보나치문제다 재귀문제로 풀면 시간초과가 나서 dp로 풀었다 class Solution { public static int solution(int n) { if(n == 1 || n == 2){ return 1; } int[] fibo = new int[n+1]; fibo[1] = 1; fibo[2] = 1; for(int i = 3; i

➜ 일상 이야기

졸업 그리고 7월부터 부트캠프를 진행하면서

2023.08.03 - [➜ 일상 이야기] - 앞으로의 백엔드 공부 계획 앞으로의 백엔드 공부 계획 회고 6월 중순 마지막 학교에서의 기말 시험을 끝내고 이제 졸업만을 앞둔 상황. 그리고 기말 시험이 끝난 후 바로 7월 1일부터 시작한 제로 베이스 백엔트 부트캠프도 이제 1달이 지났다. 코딩테 mangseok.tistory.com 8월달에 저렇게 작성한뒤 벌써 10월도 끝나간다. 그 시간동안 7월부터 시작한 제로베이스 부트캠프를 그만두고 9월달부터 다시 멀티캠퍼스 부트캠프로 옮겨서 공부하고있다. 제로베이스 부트캠프를 그만둔 이유는 공부 질이 부족하기보다 내가 누가 시키지 않으면 규칙적으로 하지 못하는 버릇이 있는것 같아서 강제로 오전 9시부터 오후 6시까지 줌을 키고 수업듣는 멀티캠퍼스로 바꾸게 됬다. ..

➜ 코딩 테스트/프로그래머스

프로그래머스 - 다음 큰 숫자 (JAVA)

toBinaryString을 사용하면 int값을 이진수로 쉽게 변환할 수 있어 어렯지 않게 풀 수 있다. 하지만 bitCount라는 메소드를 쓰면 더 간결하게 표현할 수 있었다.. 내가푼것 class Solution { public int solution(int n) { int answer = 0; String binaryN = Integer.toBinaryString(n); int count = 0; for(int i = 0; i < binaryN.length(); i++) { if(binaryN.charAt(i) == '1'){ count++; } } while(true){ n++; int count2 = 0; String check = Integer.toBinaryString(n); for(int ..

➜ 코딩 테스트/프로그래머스

프로그래머스 - 숫자의 표현 (JAVA)

이번 문제는 그냥 이중 for 문으로 풀면 효율성에서 에러가 나고 포인터 방식을 사용해서 풀어야지 되는 문제이다. start 값과 end 값의 처리를 잘 하면 풀 수 있는 문제였다! class Solution { public static int solution(int n) { int answer = 0; int start = 1; int end = 1; int sum = 1; while (start

➜ 코딩 테스트/프로그래머스

프로그래머스 - 이진 변환 반복하기 (JAVA)

package Programmers; import java.util.*; public class ProgrammingBasic { public static void main(String[] args) { String s = "110010101001"; System.out.println(Arrays.toString(solution(s))); } public static int[] solution(String s) { int transformCount = 0; int zeroCount = 0; while(!s.equals("1")) { int oneCount = 0; for(char c : s.toCharArray()) { if (c == '1') { oneCount++; } else { zeroCount+..

강맹석
맹석의 IT노트 & 일상 기록