본문 바로가기

Etc96

[Java] 프로그래머스 : 전화번호 목록 프로그래머스 : 전화번호 목록 문제 분석 전화번호 목록이 주어지고, 한 전화번호가 다른 전화번호를 포함하는 경우가 있는지 확인한다. 예를 들어 전화번호 '111'과 '1112'가 있을 때, '1112'는 '111'를 포함한다. Map을 생성하고 모든 전화번호를 넣는다. 반복문을 통해 전화번호부 배열의 요소 하나하나에 접근해서 각 번호의 길이만큼의 중첩 반복문을 만들고, 번호의 일부를 포함하는 번호가 Map에 존재하는지의 여부를 확인한다. 예를 들어 전화번호 '111'과 '1112'가 있을 때, '1112'를 나눈 '1', '11', '111'가 전화번호부에 존재하는지 확인한다. 문제 풀이 import java.util.*; class Solution { public boolean solution(Stri.. 2022. 10. 9.
[Java] 백준 9935번: 문자열 폭발 https://www.acmicpc.net/problem/9935 문제 분석 문자열과 폭발 문자열을 입력받는다. 문자열에 존재하는 모든 폭발 문자열을 제거한 문자열을 반환한다. 문자열을 구셩하는 문자들을 하나씩 스택에 넣고, 폭발 문자열과 길이가 같아지는 지점부터 반복문을 통해 스택에 담긴 문자를 인덱스로 접근하여 검사한다. (스택 사이즈) - (폭발 문자열 길이) + i (i는 0부터 시작하며 폭발 문자열의 길이이다.) 검사 중 문자 하나라도 일치하지 않는다면 boolean 변수로 기록한 후 반복문을 빠져나온다. 스택에 폭발 문자열이 존재함이 증명된다면 poll을 통해 Stack에서 제거한다. 👉 스택은 역으로 데이터 삭제가 가능하므로, 폭발 문자열 길이만큼 poll 하면 된다. 원본 문자열에 대한 검.. 2022. 10. 8.
[Java] 백준 1966번: 프린터 큐 https://www.acmicpc.net/problem/1966 문제 분석 프린터의 대기열이 존재한다고 할 때, 대기열의 문서들은 중요도를 나타내는 정수로 나타낸다. 예) 1 6 2 9 각 정수를 Queue에 담고, 문서(중요도)를 하나씩 뽑아서 남아 있는 문서들의 중요도와 비교한다. 정수가 클수록 높은 중요도를 나타내며, 먼저 출력된다. 중요도에 따라 Queue에 담긴 문서들의 위치들이 바뀌므로 배열의 형태로 인덱스와 함께 저장해야 한다. 원하는 문서가 몇 번째로 출력되는지 출력하기 위해 위치가 바뀔 때마다 별도의 count를 증가시킨다. 현재의 문서가 가장 중요도가 크다면? 👉 원하는 문서와 인덱스가 일치한지 비교하여 일치한다면 반복문을 벗어난 후 count를 출력한다. 👉 원하는 문서가 아니라면 .. 2022. 10. 7.
컴퓨팅 사고 Computational Thinking, Scratch 이 글은 boostcourse의 모두를 위한 컴퓨터 과학 (CS50 2019) - David J. Malan 강의를 수강하며 정리한 글입니다. 2진법 컴퓨터 과학이란? 문제 해결(입력을 받아서 출력을 만드는 과정)에 대한 학문이다. 따라서 입력과 출력을 표현하기 위한 표준이 필요하다. 2진법 10진법이란 우리가 일상 속에서 사용하는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 기호를 말한다. 컴퓨터에서는 이 10개의 숫자들이 존재하지 않고 0과 1로만 데이터를 표현한다. 이를 2진법이라고 한다. 어떻게 0과 1로만 글자와 사진, 영상 등의 데이터를 저장할 수 있을까? 우리는 123을 백이십삼이라고 읽는다. 이 과정이 자연스러운 이유는 각 자리를 10의 거듭제곱으로 표현하기로 약속했기 때문이다. 따.. 2022. 10. 3.
[Java] 프로그래머스 스택 / 큐 : 기능개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 풀이 각 기능의 진행도가 담긴 배열과 각 기능의 속도가 담긴 배열이 주어진다. 진행도가 100%가 되는 날짜가 며칠 뒤인지 계산해서 Queue에 담는다. 작업은 동.. 2022. 10. 2.
[Java] 프로그래머스 스택 / 큐 : 올바른 괄호 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 풀이 '('과 ')'은 짝으로 이루어져 있어야 한다는 것이 이 문제의 포인트이다. 스택을 생성한 후, '('이면 push로 넣고, ')'이면 pop을 해서 마지막에 스택이 비어 있게 된다면 괄호의 짝이 맞는 것으로 판단할 수 있다. 아래는 세부 조건.. 2022. 10. 2.