분류 전체보기

    BaekJoon 1946번: 신입 사원(C++)

    https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 풀이법 1) 정렬을 활용한 그리디 알고리즘으로 해결할 수 있었으나, 풀이에 오랜시간 걸렸던 문제이다. 2) 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 지키기 위해서, 서류 심사 성적을 기준으로 들어온 값을 정렬 하였다. 3 6 1 4 7 3 2 5 4 2 3 6 1 4 4 2 5 7 5..

    BaekJoon 1474번: 밑 줄(C++)

    https://www.acmicpc.net/problem/1474 1474번: 밑 줄 세준이는 N개의 영어 단어를 이용해 길이가 M인 새로운 단어를 만들려고 한다. 새로운 단어는 N개의 단어를 순서대로 이어 붙이고, 각 단어의 사이에 _을 넣어서 만든다. 이렇게 만든 새로운 단어 www.acmicpc.net 풀이법 1) 규칙을 찾으면 쉽게 풀 수 있는 그리디 알고리즘이었다. 2) 가장 중요한 부분은 'A' < 'B' < 'C' < ... < 'Z' < '_' < 'a' < 'b' < 'c' < ... < 'z' 이며, 사전 순으로 가장 앞서는 단어를 출력해야 한다는 것이다. 3) 입력 받은 값들을 토대로 m의 길이와 단어의 길이를 통해 최소 _가 들어갈 개수를 파악해 주었다. 이후 추가적으로 _를 넣을 ..

    BaekJoon 16928번: 뱀과 사다리 게임(C++)

    https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 풀이법 1) BFS와 구현이 합쳐진 문제였으며 쉽게 풀 수 있는 문제였다. 2) 1차원 배열과 방문을 표기할 배열을 선언해 주었으며, 주사위로 나올 수 있는 값인 1부터 6까지를 일일이 넣어보고, 사다리가 있는 경우 사다리를, 뱀이 있는 경우 뱀을 타도록 코딩을 진행했다. 3) 방문하지 않은 값만 새롭게 방문하도록 코딩을 진행했으며 100이 나오는 경..

    BaekJoon 16236번: 아기상어(C++)

    https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 풀이법 1) BFS와 구현이 합쳐진 문제였으며 고려해야할 예외처리가 많아서 힘들었던 문제이다. 2) 현재 아기 상어의 크기보다 작은 값이 있는 경우 탐색을 계속 진행하며, bfs를 반복하며 탐색을 진행했다. 작은 값이 존재하나 갈수 없는 곳이 존재하면 탐색을 중지하였다. 3) 현재 아기 상어의 크기만큼 아기 상어가 물고기를 먹으면 사이즈가 증가하는 것을 꼭 고려해 주어야 하며 아기 상어가 ..

    Java Collectors의 메소드 정리(for 람다)

    람다를 제대로 활용하기 위해선 Java의 Collection과 Stream에 대한 정리가 필요할 것이라 생각하여 글을 포스팅 한다. 우선 사용하게 될 package들을 정리해 보았다. java.util.Collection(Interface) List, Set, Map CRUD를 위해서 활용한다. java.util.Collections(Class) Collection Inteface의 객체들을 관리하는 클래스이다. 객체간의 변환과 객체의 데이터를 탐색하는 기능을 주로 가진다. java.util.Arrays [ ]형태의 배열 또는 Collection 이너페이스의 객체들을 배열로 관리하는 기능을 가진다. 람다식 활용법 1. 람다식을 활용하기 위해서 Stream으로 바꾸는 방법 stream() 을 사용하거나 j..

    BaekJoon 14891번: 톱니바퀴(C++)

    https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이법 1) 깔끔한 풀이를 기대하고 들어왔다면.. 죄송하지만 해당 풀이는 도움이 크게 되지는 않습니다. 2) Deque을 사용하면 더 쉽게 풀 수 있다는 것을 문제를 보고 눈치 챘지만, 안 쓴지 너무 오래되었으며 검색 없이 정해준 30분이라는 시간 제한 내에 어떻게든 풀기 위해 조건을 빡 구현하여 배열로 문제를 풀었습니다. 3) checkOne, CheckTwo, CheckThree 라는 bo..

    BaekJoon 18111번: 마인크래프트(C++)

    https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 풀이법 1) 시간초과를 고려하여 이분 탐색을 실시했으나 실패하여 BruteForce로 문제를 해결하였다. 2) 값을 입력 받음과 동시에 값 중 가장 작은 값과 가장 큰 값을 지정하였다. 3) 이후 for문을 통해 가장 작은 값 부터 가장 큰 값까지 search를 실시하여 가능한 경우의 수 중 가장 시간이 적게 걸리는 것과 그 중 가장 높이가 가장 높은 것을 출력하였다. 4) 이를 파악 시에는 인..

    JAVA 스트림(Stream) 정리

    병렬처리 프로그램 내에서 영역을 여러 개로 나누어 각각의 계산을 여러 프로세스에서 동시에 수행하는 것이다. 자바에서는 병렬처리를 Stream API를 통해 집계 또는 연산을 할 수 있도록 제공하며 손쉽게 구현할 수 있도록 클래스와 메소드를 제공한다. 자바에서의 Stream API는 주로 배열이나 Collection 등의 집합체를 바탕으로 값의 집계나 데이터를 사용한 처리 API이다. Stream API 스트림의 구조는 크게 3가지로 나뉜다. 스트림 생성 중개 연산 최종 연산 [예시] Collection집합.스트림생성().중개연산().최종연산(); 계속해서 .으로 연계할 수 있게 하는 방법을 파이프라인이라고 한다. Stream은 재사용이 불가능하다. 병렬 스트림인 parallelStream의 경우 여러 쓰..

    함수형 인터페이스(Functional Interface) & 기초 람다

    함수형 인터페이스 한 개의 추상 메소드를 가지고 있는 인터페이스 자바의 람다식은 함수형 인터페이스로만 접근이 되기에 필요하다. 선언하여 변수처럼 할당시키거나, 다른 메소드들에 변수를 이용해 값을 전달하는 형태의 식을 가진다. [선언 에] @FunctionalInterface --> 어노테이션을 선언 private interface user_name{ public void [자료형] user_name(매개인자,,,); } 표현식 사용 (구현하는 메소드의 인수)-> {처리} 형식 표현식 특징: 람다 표현식은 익명으로 처리되어 이름이 없다. 람다 표현식은 compiler가 context에 맞는 타입을 유추하기 때문에 return type이 없다. throws가 없다. 표현식 자체가 generic이 될 수 없어..

    BaekJoon 1062번: 가르침(C++)

    https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 풀이법 1) 들어온 문자열을 전처리하지 않고 바로 백트래킹을 실시 했을 때 바로 시간 초과가 났던 문제이다. 2) 알파벳 소문자만 입력 값으로 들어오므로 넣을 수 어떤 것이 현재 들어온 것들인지 표기 하기 위해 26개짜리 visited 배열을 만든 후 a,n,t,c,i를 미리 넣어 주었다. 3) 이후 들어온 값들은 "anta"로 시작하고 "tica"로 끝나므로 이 부분들을 substring..