본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)/코딩 테스트 & 알고리즘17

이진 변환 반복하기 (프로그래머스, Level 2) 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 s의 길이는 1 이상 150,000 이하입니다. s에는 '1'이 최소 하나 이상 포함되어 있습니다. 입출력 예 주어진 데.. 2022. 6. 21.
BFS(Breadth-first Search), DFS(Depth-First Search) 너비우선 탐색, 깊이탐색 알고리즘 문제에서 자주 등장하는 단골손님 입니다. 탐색(Search)이란 그래프 구조형태의 데이터에서 특정 데이터를 찾거나 서로의 연결 상태를 확인하기 위한 방법으로 알려져 있습니다. * 물론 그래프 형태의 데이터구조에서만 사용되지는 않습니다 단순한 반복문이나 조건문으로 이루어진 알고리즘이 아니기 때문에 처음 접근하기에는 난이도가 있다고 생각 합니다. 또한 그래프(graph)구조를 2중배열로 표현하는 방법을 만나기 때문에 다차원배열에 대해서 경험이 적다면 역시나 어려울 수 있습니다. 아래와 같은 데이터 구조가 있다고 가정하여 봅니다. 숫자 1은 숫자 2,4와 연결되어 있습니다. 숫자 2는 1,3,4와 연결되어 있습니다. 숫자 3은 2,4와 연결되어 있으며, 숫자 4는 1,2,3과 연결되어 있습니다. 1 .. 2022. 6. 8.
전력망을 둘로 나누기 (프로그래머스, Level 2) 문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 있으며, 이는 전력망의.. 2022. 6. 7.
영어 끝말잇기 (프로그래머스, Level 2) 최근 지친마음(?)을 회복하고자 간단한 코테문제를 풀기 시작하였습니다. 프로그래머스에서 제공되는 "영어 끝말잇기" 라는 문제를 풀어 보았습니다. 문제 내용은 아래와 같습니다. * 문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → drea.. 2022. 5. 16.
Java Map에서 Map데이터 다루기(자바 Map을 깊이탐색으로) 자바(Java)를 사용하다보면 가장 아쉬운 기능이 Json형식의 데이터를 자유롭게 만들지 못하다는 점 입니다. 아래 json 데이터를 살펴 보겠습니다. let 데이터1 = { "데이터2": { "데이터3": { "가져와서바꿀키" : "값" } } } 위 json객체에서 "가져와서바꿀키"의 값을 확인하고 바꾸는 것은 매우 쉽습니다. Javascript로는 전혀 어렵지 않는 기능 입니다. 이와 비슷하게 자바에서는 Map이라는 객체가 이러한 역할을 담당 합니다. Map은 키(key)와 값(value)을 넣을 수 있는 컬렉션이라는 자료구조 입니다. 위 자바스크립트의 내용과 비슷하게 아래 Map객체로 데이터가 담아져 있다고 가정하여 봅니다. { HashMap first = new HashMap(); HashMap.. 2021. 6. 23.
10. 이중 우선순위 큐 (프로그래머스, 힙 Level 3) * 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어 수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. * 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다. - 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하.. 2021. 3. 11.