목록분류 전체보기 (71)
작심 365
문제 링크 : https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net Idea 정수 n을 1,2,3 의 합으로 나타내는 방법의 수를 구하는 문제이다. n은 1,2,3 을 사용해서만 나타낼 수 있다. ? + .... + ? + ? + ? = n 이라고 할때 모든 ?에는 1,2,3 중 하나가 들어간다. 일단 마지막 ? 만 본다고 하면 마찬가지로 1,2,3중 하나가 들어갈 것이다. ? + .... + ? + ? + 1 = n ? + .... + ? + ? + 2 = n ? + .... + ? + ? + 3 = n 그러면 우리는 이걸 더 작은 문제로 바꿔서..
문제 링크 : https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net Idea X 로 할수있는 연산은 3가지가 있다. 1. x/3 2. x/2 3. x-1 각각의 연산을 하게 되면 x의 크기는 작아진다. 3가지 연산중 한가지를 사용해 1로 만들어야 되고 그 연산 횟수가 최소가 되어야 한다. 예를 들어 x가 12라고 하면 12/3 = 4 가 될수가 있고 12/2 = 6 이 될수가 있고, 12-1 = 11 이 될수가 있다. 즉 12를 1로 만드는 최소 횟수는 min(4를 1로 만드는 최소 횟수, 6을 1로 만드는 최소 횟수, 11을 1로 만드는 최소 횟수) + 1 로 ..
문제 링크 : https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net Idea 문제를 보면 그래프 문제인것은 바로 알 수 있다. 시작점 (1,1) 에서 목적지(n,m) 으로 이동하려고 할때 벽을 부수는 최소 횟수를 구하려고 한다. 운이 좋으면 벽을 하나도 안부수고 목적지 까지 갈 수 있고, 아니면 벽을 1개 이상 부수어야 할 수도 있다. 이 문제는 두가지 풀이로 풀 수있다. 첫번째 풀이는 큐를 두개 사용하는 것이고, 두번째 풀이는..
문제 링크 : https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net Idea 영선이가 할수 있는 일은 총 3가지가 있다. a. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장. b. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 c. 화면에 있는 이모티콘 하나 삭제 영선이가 하고자 하는 것은 이모티콘 s개를 만드는 것이다. 그리고 위 3가지 행위 모두 이 이모티콘 개수에 변화를 준다. 각 행위를 하는데 드는 시간은 1초로 동일 하다. 그리고 구..
정적 컨텐츠란 원래 파일 그 자체를 그대로 보여주는 것. 동적인 데이터가 없는 html 페이지. 동적인 데이터가 없기 때문에 항상 같은 내용만 보여주게 된다. /resources/static/ 스프링 부트는 정적 컨텐츠를 해당 경로밑에서 찾는다. 정적 html 페이지 예시 static 폴더 밑에 html 파일 생성. 정적 페이지 요청 url 에 파일명 그대로 입력한다. MVC와 템플릿 엔진 MVC 는 Model, View, Controller 역할로 코드를 분리하는 것을 말한다. View 는 사용자에게 보여지는 화면을 나타낸다. 템플릿 엔진이 여기에 해당한다. 참고로 View는 Model 에만 의존을 해야되고, Controller에는 의존하면 안된다. (-> View 내부에 Model 관련 코드만 허용한..
Java 에서 클래스를 만들면 클래스와 관련된 멤버변수를 선언하게 되는데 이때 getter , setter 함수를 통해 멤버변수에 쉽게 접근해서 값을 변경하거나 가져올 수 있다. intelliJ 같은 툴도 자동으로 클래스에서 getter, setter 함수를 만들어 주는 기능도 제공하고 있다. 손쉽게 만들어서 가져다 쓸수 있기때문에 나도 자주 사용을 해왔는데 알고보니 좋은 방법이 아니라고 한다. 먼저 getter 와 setter 를 사용하는 이유에 대해서 생각해 보자. Getter와 Setter를 사용하는 이유 우선, 자바에서 클래스를 만들고 그 클래스 안에 맴버 변수들은 외부에서 마음대로 접근할 수 없도록 해야 한다. 그래서 보통은 맴버 변수 제어자를 private 으로 둔다. 그러면 당연히 외부 클래..
Array 와 ArrayList 차이 공통점 둘다 하나의 묶음으로 데이터를 저장한다. 차이점 Array(배열)의 경우 길이가 지정되면 그 길이를 변경할 수 없다. 만약에 미리 지정한 길이가 부족 한 경우 직접 새로운 배열을 만들어서 모두 옮겨주어야 한다. 길이가 남는 경우는 공간이 낭비되는 단점이 있다. ArrayList의 경우는 가변 길이이다. 미리 지정한 길이가 부족할 경우 자동으로 크기를 늘려준다. Array 배열은 같은 타입의 데이터들을 하나로 묶어서 다루는 것을 말한다. 배열은 이미 지정된 크기는 변경할수 없기 때문에 지정된 크기보다 많은 양의 데이터를 저장할 경우 에러가 발생한다. 배열은 변수에 저장된 데이터 묶음들이 들어있는 시작 주소 값이 저장된다. ArrayList ArrayList는 L..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 봤을때 먼저 떠오르는 방법은 모든 경우의 수를 다 확인하는 방법이다. 숫자 하나당 +와 -가 가능하므로 숫자가 n 개일때 나올수 있는 조합의 갯수는 2x2x2x2...x2 = 2^n 이다. 문제에서 입력으로 숫자의 갯수는 최대 20이라고 했으므로 2^20 은 1억이 안되는 숫자로 1초도 걸리지 않는다. 따라서 모든 경우의 수를 다 확인하는 완전 탐색으로도 시간내에 풀이가 가능하다..