본문 바로가기

전체 글

(93)
[Programmers] LV2 - 캐시 https://programmers.co.kr/learn/courses/30/lessons/17680 = cacheSize){ cache.poll(); } cache.add(city); answer+=5; } } } return answer; } }
[Programmers] LV2 - 큰 수 만들기 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 알고리즘 분류 : 그리디 알고리즘 문제 파악 처음으로 생각했던 것은 가장 작은 숫자부터 1개씩 제거해볼까 하는 생각이 들었다. 하지만 입출력 예제 3번에서 1,2를 제거할 경우 477584가 나오므로 775841보다 작은 숫자가 나오기 때문에 아니었다. 그 뒤로 생각난 것이 스택 각 자리의 숫자를 스택에 넣고 Peek() 데이터와 비교하여 작을 경우 현재 위치의 숫자보다 작은 것을 제거해 나간다 3번 예제를 보면 Stack : 4 Stack : 4,1로 쌓이다가 7은 4,1 모두 7보다 작으니 Stack에서 제거 한 다음 7을 Stack에..
[Programmers] LV2 - 이진 변환 반복하기 https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 문제 파악 1. 0과 1로 이루어진 문자열의 모든 0을 제거한다. 2. 0을 제거한 문자의 길이를 다시 2진법으로 표현한다. 3. 다시 위의 과정을 문자열이 "1"이 될 때까지 반복한다. 더보기 import java.util.*; class Solution { public int[] solution(String s) { int[] answer = new int[2]; int zerocnt = 0; int cycle = 0; StringBuilder sb; while(!s.equals("1")) { sb = new StringBuild..
[Programmers]LV2 - 뉴스 클러스터링 https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 문제 파악 교집합, 합집합을 만들 수 있는가?라고 생각하고 접근하였다. 1. 각 문자열 Str1과 Str2에서 2 글자씩 끊어서 집합의 원소를 만든다. (단, 2글자 모두 영문자이어야 하며 , 특수문자, 숫자가 들어갈 시에는 원소가 되지 못한다.) 2. 문자열 Str1가 "AAA" 라면 집합 A의 원소는 "AA", "AA"로 2개가 만들어진..
[Programmers] LV2 - 스킬 트리 https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 문제 파악 유저들이 만든 스킬 트리가 선행 스킬에 맞는 스킬 트리인지 판단하고 개수를 RETURN 해주면 된다. 문제를 푸는 아이디어는 주어진 스킬트리에서 선행 스킬이 아닌 문자를 ReplaceAll로 제거하고 그 문자에서 선행 스킬의 IndexOf가 0이 아니라면 제거해주는 식 (선행 스킬의 순서와 맞지 않음)으로 풀었다. 처음 통과한 소스 더보기 import java.util.*; class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0;..
[BOJ] 1022번: 소용돌이 예쁘게 출력하기 https://www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 알고리즘 분류 구현 문제 파악 0,0 지점으로부터 우, 상, 좌, 하로 돌아가면서 숫자가 증가하는 소용돌이에서 (r1, c1) ~ (r2, c2)의 범위까지의 숫자를 출력한다. 처음에는 BFS로 해결 해볼까 라는 생각에 이리저리 시도해봤지만 r2-r1+1 , c2-c1+1 만큼의 크기를 만들어서 계산을 해볼까 하다가 너무 복잡할 것 같아서 생각을 바꿨다. (1,1), (2,2), (3,3) 순으로 이동해야 하는 거리가 늘어나며 정방향, 역방향을 설정해서 소용돌이처럼 x, y 좌표와 value를 설정해 나간다. 만약 ..
[Programmers] LV2- 프렌즈4블록 https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 문제 파악 문제의 의도는 아래의 사진과 같다. 애니팡 게임과 비슷하게 1. 2X2칸의 이모티콘이 모두 같으면 해당 칸을 지운다. 2. 지운 칸의 개수를 센다. 3. 지워진 이모티콘의 칸을 위에 있던 이모티콘이 내려와 빈자리를 채운다. 아마 비워진 칸으로 이모티콘을 이동시키는 부분을 깔끔하게 코딩 하고 싶어서 시간을 많이 쓴 거 같다 가독성..
[Java] 스택(Stack) 스택(Stack)의 개념 - 큐와 다르게 나중에 들어온 데이터가 먼저 나가는 LIFO(Last In First Out)로 저장하는 자료 구조이다. 스택(Stack)의 기본 메서드 4가지 push(item) : item 하나를 스택의 가장 윗부분에 추가한다. pop() : 스택에서 가장 위에 있는 항목을 제거한다. peek() : 스택의 가장 위에 있는 항목을 반환한다. isEmpty() : 스택이 비어있을 경우 true를 반환한다. 스택(Stack)의 활용 사례 재귀 알고리즘 웹 브라우저 방문 기록 (뒤로 가기) 실행 취소 역순 문자열 만들기 스택(Stack)의 구현 import java.util.NoSuchElementException; public class Stack { class Node { pr..