- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 연결리스트
- til
- C++
- sql
- 동적할당
- 공유대학
- python
- 배열
- Java
- C언어
- 안드로이드
- 코딩테스트
- android studio
- 자바
- 알고리즘
- 구글 로그인
- oauth
- firebase google
- 프로그래머스
- 안드로이드 스튜디오
- 비주얼 베이직
- 로그인
- 정렬
- 자료구조
- Firebase
- 파이썬
- 컴퓨터공학과
- 프로그래밍 입문
- 백준
목록개인 공부 (150)
코딩하는 해달이
문제 설명매우 큰 도화지에 자를 대고 선을 그으려고 한다. 선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다. 선을 그을 때에는 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데, 여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다고 하자.이와 같은 식으로 선을 그었을 때, 그려진 선(들)의 총 길이를 구하는 프로그램을 작성하시오. 선이 여러 번 그려진 곳은 한 번씩만 계산한다.입력첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x 출력첫째 줄에 그은 선의 총 길이를 출력한다.알고리즘정렬스위핑풀이코드import java.io.*;import java.util.*..
문제 설명정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.둘째 줄에는 N을 1로 만드는 방법에 포함되어 있는 수를 공백으로 구분해서 순서대로 출력한다. 정답이 여러 가지인 경우에는 아무거나 출력한다.알고리즘다이나믹 프로그래밍그래프 이론그래프 탐색풀이코드import java.io.*;import java.util.*;public class ..

위상 정렬위상 정렬은 주로 작업 순서를 정하거나 의존성 관계를 해결할 때 사용하는 알고리즘으로 정점들의 선행 순서를 위배하지 않으면서 모든 정점을 나열하는 알고리즘이다.특징비순환 방향 그래프에서만 적용이 가능하다.정렬 결과가 여러가지 일 수 있다.사이클이 있는 그래프에서는 위상 정렬이 불가능하다. - 사이클 : 한 정점에서 출발하여 간선과 정점을 지나 다시 출발했던 정점으로 돌아오는 것알고리즘 구현 방법DFS(깊이 우선 탐색) 기반 방법 : 그래프를 DFS로 탐색하며 탐색이 끝나느 정점부터 스택에 삽입, 스택에서 꺼내는 순서가 정렬의 결과진입차수 기반 방법 : 진입차수가 0인 정점을 큐에 넣고 하나씩 꺼내면서 간선을 제거, 큐에서 꺼내는 순서가 정렬의 결과시간 복잡도O(V + E) (V : 정점의 수,..
문제 설명민오는 1번부터 N번까지 총 N개의 문제로 되어 있는 문제집을 풀려고 한다. 문제는 난이도 순서로 출제되어 있다. 즉 1번 문제가 가장 쉬운 문제이고 N번 문제가 가장 어려운 문제가 된다.어떤 문제부터 풀까 고민하면서 문제를 훑어보던 민오는, 몇몇 문제들 사이에는 '먼저 푸는 것이 좋은 문제'가 있다는 것을 알게 되었다. 예를 들어 1번 문제를 풀고 나면 4번 문제가 쉽게 풀린다거나 하는 식이다. 민오는 다음의 세 가지 조건에 따라 문제를 풀 순서를 정하기로 하였다.N개의 문제는 모두 풀어야 한다.먼저 푸는 것이 좋은 문제가 있는 문제는, 먼저 푸는 것이 좋은 문제를 반드시 먼저 풀어야 한다.가능하면 쉬운 문제부터 풀어야 한다.예를 들어서 네 개의 문제가 있다고 하자. 4번 문제는 2번 문제보다..

문제 설명2차원 격자공간에 두 개의 꼭짓점 좌표로 표현되는 직사각형이 있다. 직사각형은 아래와 같이 왼쪽 아래 꼭짓점 좌표 (x, y)와 오른쪽 위 꼭짓점 좌표 (p, q)로 주어진다.이 문제에서 모든 직사각형은 두 꼭짓점의 좌표를 나타내는 4개의 정수 x y p q 로 표현된다. 단 항상 x3 2 9 8두 개의 직사각형은 그 겹치는 부분의 특성에 따라 다음 4가지 경우로 분류될 수 있다. 먼저 두 직사각형의 겹치는 부분이 직사각형인 경우이다. 아래 그림(a)는 공통부분이 직사각형인 경우의 3가지 예를 보여준다,또는 겹치는 부분이 아래 그림 (b)와 같이 선분이 될 수도 있고, 그림 (c)와 같이 점도 될 수 있다. 마지막으로 아래 그림 (d)와 같이 공통부분 없이 두 직사각형이 완전히 분리된 경우도 있..

Factory Method Pattern객체 생성을 공장 클래스로 캡슐화 처리하여 대신 생성하게하는 디자인 패턴클라이언트에서 직접 new 연산자를 사용해 객체를 생성하지 않고, 공장 클래스가 각 제품 객체를 전문으로 생성하게 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임지게하는 패턴이다.또한 객체 생성에 필요한 과정을 템플릿 처럼 미리 구성해놓고, 전처리나 후처리를 통해 생성 과정을 다양하게 처리하여 객체를 유연하게 정할 수 있는 특징이 있다.패턴 구조Creator : 최상위 공장 클래스로서, 팩토리 메서드를 추상화하여 서브 클래스가 구현하도록함 - 객체 생성 처리 메서드(operation): 객체 생성에 관한 전,후처리를 템플릿화 - 팩토리 메서드(cr..
문제 설명정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.2를 곱한다.1을 수의 가장 오른쪽에 추가한다. A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.입력 첫째 줄에 A, B (1 ≤ A 9)가 주어진다. 출력 A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다. 알고리즘그래프 이론그리디 알고리즘그래프 탐색너비 우선 탐색풀이코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { private long a, b; Main(String[] inputs) { ..
문제 설명세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.입력첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.출력첫째 줄에 정답을 출력한다.알고리즘수학그리디 알고리즘문자열파싱풀이코드import java.io.BufferedReader;import j..