- Today
- Total
목록전체 글 (320)
개발하는 고라니
람다식 Programming 언어에서 사용되는 개념으로 익명 함수를 지칭하는 용어이다. 실무적으로 코드의 간결함, 지연 연산을 통한 처리 능력 향상 그리고 기존 순환 관련 코드를 구현하는데 있어 불필요한 부분들을 제거할 수 있다는 점에서 중요하게 다루어진다. # 장점 코드의 간결성 효율적인 람다 함수의 사용을 통해 불필요한 루프의 삭제가 가능하고, 함수의 재활용 여지가 커진다. 필요한 정보만들 사용하는 방식을 통한 퍼포먼스 향상 - 지연 연산을 지원하는 방식을 통해 효율적 증대를 기대할 수 있다. # 단점 모든 원소를 전부 순회하는 경우 람다식이 좀 더 느리다. (어떤 방법으로 만들어도 최종 출력되는 byte code나 assembly code는 단순 반복문보다 몇 단계를 더 거치게 된다) 익명 함수의 ..
정렬은 n개의 원소를 순서대로 배열하는 것이다. 원소는 숫자, 문자, 문자열, 날짜 등 다양한 것이 될 수 있다. 정렬은 그 자체로도 매우 자주 사용되지만 알고리즘의 설계와 분석, 생각하는 방법 등을 훈련하기에도 더없이 적합한 주제인 것 같다. 이번 포스팅에서는 짧고 핵심만 간추려서 간단하고 기본적인 정렬 알고리즘인 선택 정렬, 버블 정렬, 삽입 정렬을 Java로 구현해보고 각 정렬이 완료되는데 걸리는 시간도 보도록 한다. 선택 정렬 선택 정렬은 원리가 간단한 정렬 알고리즘 중 하나이다. n개의 원소를갖는 배열 A[a[1], a[2], ..., a[n]]에서 가장 큰 원소를 찾아 이 원소와 배열의 끝자리에 있는 A[n]과 자리를 맞바꾼다. 그러면 현재 A[n]에는 이 배열에서 가장 큰 원소가 있으므로 더..
11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net # 문제 요즘 민규네 동네에서는 스타트링크에서 만든 PS카드를 모으는 것이 유행이다. PS카드는 PS(Problem Solving)분야에서 유명한 사람들의 아이디와 얼굴이 적혀있는 카드이다. 각각의 카드에는 등급을 나타내는 색이 칠해져 있고, 다음과 같이 8가지가 있다. 전설카드 레드카드 오렌지카드 퍼플카드 블루카드 청록카드 그린카드 그레이카드 카드는 카드팩의 형태로만 구매할 수 있고, 카드팩의 종류는 카드 1개가 포함된 카드팩, 카드 2개가 포함된 카드팩, ... 카드..
14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net # 문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 3 5 1 1 2 4 2 10 20 10 20 15 40 200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 ..
[동적 프로그래밍 + DFS] 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net # 문제 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으며, 각 지점 사이의 이동은 지도에서 상하좌우 이웃한 곳끼리만 가능하다. 현재 제일 왼쪽 위 칸이 나타내는 지점에 있는 세준이는 제일 오른쪽 아래 칸이 나타내는 지점으로 가려고 한다. 그런데 가능한 힘을 적게 들이고 싶어 항상 높이가 더 낮은 ..
StringTokenizer 문자열을 특정 구분자(delim)로 나누어 주는 클래스이다. 메소드와 생성자 모두 몇 개 없어서 금방 익힐 수 있다. 스트림 API 처럼 한 번 사용되고 나면 재사용이 불가능 하다. * Constructor //str을 기본 구분자(\t, \r, \n, \f, " ")로 구분한다. public StringTokenizer(String str) //str을 특정 구분자(delim)으로 구분한다. public StringTokenizer(String str, String delim) //str을 특정 구분자(delim)으로 구분해주며, returnDelims가 //true일 시 구분자도 토큰에 포함하며 //false일 시 토큰에 포함하지 않는다. public StringToken..
1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 www.acmicpc.net # 문제 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오. # 입력 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 ..
7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net # 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? # 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, ...,..