전체 글 77

백준 9009(JAVA)

문제 입력되는 수에 대해서 최소의 개수의 피보나치의 합이 어떠한 수가 되는 피보나치 수들을 구하여라 풀이 문제를 보자마자 든 생각은 일단 dp테이블에 피보나치의 결과를 메모이제이션 해야겠단 생각이 들었다. 피보나치의 합을 구하는데 피보나치의 개수가 최소의 개수가 되야하므로 입력되는 정수 num에 가장 근접한(같거나 작은) 피보나치의 결과를 num에서 빼나가면 되겠단 생각이들었다. 어떠한 수는 피보나치 하나의 값이거나 여러개의 합으로 구성될수 있으므로 어떠한 수가 입력되던간에 정답은 나온다. 입력되는 수에 가장 근접한 수를 빼나가면 최소의 개수의 피보나치일것이다. 즉, 그리디알고리즘이다. 코드 package baekjoon.그리디; import java.io.*; import java.util.ArrayL..

algorithm 2021.07.14

백준 9081(JAVA)

문제 사전순 정렬시, 바로 다음에 올 문자열을 구해라 바로 다음 순열, next permutation을 구하는 문제이다. 풀이 이문제를 보자마자 떠오른 생각은 백트래킹으로 순열을 구한다음 중복을 제거하며 List에 단어를 넣고 List에서 원본 문자열을 찾은뒤 바로 다음 문자열을 출력하자 라는 풀이가 떠오름 거슬렸던건 입력되는 문자열의 길이가 99가 최대라는 것임. 무조건 시간초과가 날게 뻔함요 ㅠ.ㅠ 그래서 한참을 헤매다가 next permutation을 구하는 로직이 존재하다는걸 알게되었고 적용을 하였더니 맞았다. next permutation in JAVA 뒤에서 부터 증가하지않는 첫번째 위치를 찾는다. 또 다시 뒤에서부터 1에서 찾은 위치의 원소보다 처음으로 큰 위치를 찾는다. 두 위치의 값을 서..

algorithm 2021.07.14

sqlzoo - SELECT basics

SQL SELECT population FROM world WHERE name = 'Germany'; SELECT name, population FROM world WHERE name IN ('Sweden', 'Norway', 'Denmark'); IN 연산자는 name이 소괄호안에 포함되어있으면 참을 반환한다. SELECT name, area FROM world WHERE area BETWEEN 200000 AND 250000; BETWEEN 연산자는 20000 이상, 250000 이하를 의미한다.(=에 유의) quiz 3번 5번 5번 LIKE '%a'는 문자열의 맨 뒤 문자가 a로 끝나는 문자열이 있으면 참을 반환한다. 염으로 시..

sql 2021.07.14

[OS] 운영체제 OS Overview

운영체제의 역할 User Interface(편리성) CUI, GUI, EUCI Resource management(효율성) HW자원, SW자원 관리 Process and Thread management 프로세스와 쓰레드 관리 System management 시스템 보호 컴퓨터 시스템의 구성 컴퓨터시스템의 전체 구성도 크게 사용자가 사용하는 어플리케이션, OS(System call interface, Kernel), 하드웨어 자원들로 이루어져있다. OS는 컴퓨터 하드웨어자원을 효율적으로 관리해서 사용자에게 서비스를 제공하는 소프트웨어이다. 사용자가 하드웨어의 자원을 관리하는 OS의 핵심인 Kernel에 직접 요청하는 것을 제한하고 막기위해서 중간에 System Call Interface라는 사용자와 Ker..

computer science 2021.07.14

[OS] 운영체제 Computer System Overview

들어가기에 앞서 우리는 컴퓨터를 통해서 웹 서핑도하고, 게임도 하고, 카톡도 할수있다. 컴퓨터로 이러한 서비스들을 이용할수 있는 이유는 뭘까? 키보드로 채팅을하고, 마우스로 클릭을 하며 내가 명령한 명령들이 컴퓨터 내부에있는 하드웨어들에 의해 저장이되고, 실행이된다. 바로 이러한 컴퓨터 하드웨어 장치들이 존재하기 때문에 우리는 컴퓨터로 여러 서비스를 이용할수 있다. 그렇다고 이러한 하드웨어 장치들만 있다해서 컴퓨터에서 여러 서비스를 이용할수 있는건 아니다. 우리는 하드웨어 장치를 효율적으로 사용하게 도와주는 OS(Operating System)가 있기에 다양한 서비스를 이용할수 있다. OS(Operating System) 컴퓨터 하드웨어를 효율적으로 관리하는 것 왜? 컴퓨터 하드웨어 자원을 효율적으로 관..

computer science 2021.07.14

백준 17413(JAVA)

문제 주어진 문자열 S중 단어만 찾아서, 단어만 뒤집어라 문제 자체는 이해하기가 쉽다. 단어는 태그가 아니며, 단어끼리는 ' ' 공백으로 띄워져있다. 풀이 단어가 시작하는 index를 저장할 start변수를 통해 현재 index까지의 StringBuilder를 만들고 reverse()메서드로 뒤집은뒤 replace메서드로 다시 부분 문자열을 변경하면 된다! java로 풀면 불변 클래스인 String으로는 데이터 수정이 되지않으므로 StringBuilder로 하는것이 적절하다.(String은 새로운 객체를 생성함, 하나의 인스턴스에서 수정이 되지않음) 코드 package baekjoon.구현; import java.io.*; public class Main17413 { static Strin..

algorithm 2021.07.12