my study.

전체 글 88

[백준] 9019 DSLR, java

9019번: DSLR네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에www.acmicpc.net문제 간단 설명   제목이 DSLR 이길래 카메라 관련 문제인 줄 알았으나 D, S, L, R 연산을 하는 문제라서 DSLR 이었습니다. 문제는 0~10000 수를 저장할 수 있는 레지스터에 시작 수가 하나 들어있고, 타겟(목표가 될 수) 숫자가 주어집니다. 우리는 이 시작 수를 가지고 D, S, L, R 연산만을 이용해서 타겟 수를 만들면 되는데 최소한의 명령으로 이를 완성해야 합니다. 이 최소한의 명령을 구하는 것이 문제이며, '스페셜 저지' 문제라 ..

[백준] 7569 토마토, java

7569번: 토마토첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100,www.acmicpc.net문제 간단 설명H개의 층에 N x M 사이즈의 상자에 익은토마토, 안익은 토마토, 빈공간이 있습니다. 익은토마토는 하루의 시간동안 인접한 여섯방향 상하좌우앞뒤 방향에 존재하는 안익은 토마토를 익게 만들 수 있습니다. 그렇다면 몇일이 지나야 상자안에 있는 모든 토마토를 익게 만들 수 있는지 구하시오. 모든 토마토를 익게 만들 수 없다면 -1을 반환 하면 됩니다.문제 풀이생각을 하는 것이 크게 어려운 문제는 아니었던 것 같습니다. 일단 가로, 세로..

[프로그래머스] 숫자 문자열과 영단어, java

프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 간단 설명오른쪽의 one4seveneight 과 같은 문자열이 주어졌을 때 이를 순수한 숫자로 변경하는 문제입니다.풀이문제의 요구사항을 그대로 구현하면 되는 구현 문제였습니다.import java.util.*;class Solution { public int solution(String s) { int answer = 0; //숫자로 변환을 시켜주기 위한 재료로 map에 각각 담아놓습니다. HashMap map = new HashMap(); ..

[백준] 1927 최소 힙, java

1927번: 최소 힙첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0www.acmicpc.net문제 간단 설명이 문제는 제목처럼 최소 힙이라는 자료구조를 사용하는 해결 방법인 문제입니다. 저는 최소 힙의 역할을 해줄 수 있는 우선순위 큐(Priority Queue)를 이용하여 간단하게 풀이 하였습니다.풀이Java에서 제공하는 라이브러리인 Priority Queue를 이용하여 문제에서 주어진 그대로 사용하였습니다.코드package com.baekjoon.silver;import java.io.BufferedReader;import java.i..

[백준] 1764 듣보잡, java

1764번: 듣보잡첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.www.acmicpc.net문제 간단 설명듣도 못한 사람 명단, 보도 못한 사람의 명단이 주어집니다. 각각의 명단에는 중복된 이름이 존재하지 않으며 두가지 명단에 모두 포함된 사람의 수를 구하고, 해당 사람들의 명단을 사전순으로 출력합니다.풀이입력 조건에 주어진 듣도 못한 사람 명단, 보도 못한 사람 명단의 수가 500,000 이하의 자연수라고 주어졌습니다. 그렇기 때문에 단순히 이중 포문으로 두가지 리스트를 비교하는 방법은 시간 초과가 날 것이 분명했습니다. (500,000*500,000)..

[백준] 13460 구슬 탈출 2, java

13460번: 구슬 탈출 2첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B'www.acmicpc.net백준의 삼성 SW 역량 테스트 기출 문제 문제집에 포함된 문제입니다.주로 빡센 구현 문제를 내는 삼성 SW 역량 테스트 문제인 만큼 어려운 알고리즘 보다는 정확한 구현을 하는 문제였던 것 같습니다. 문제를 읽어보면 구슬을 최대 10번 이동시켜보고 그 이상의 횟수가 필요하다면 -1 을 반환하라고 나타나 있습니다. 그렇기 때문에 최악의 경우의 수가 4^10 정도라고 생각이 되었고, 2초의 시간 제한을 가진 문제였기에 완전 ..

[백준] 10989 수 정렬하기 3, java

10989번: 수 정렬하기 3첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.www.acmicpc.net백준 브론즈1 문제입니다. 최대 10,000,000개의 데이터를 입력받아 정렬하여 출력하는 문제입니다. 데이터의 개수가 많으므로 Scanner를 이용한 입력이 아닌 BufferedReader를 이용한 입력을 받았고, 출력도 StringBuilder를 생성해서 한 번에 하였습니다. 2751번 문제와 똑같은 코드로 해결할 수 있었습니다. import java.io.*;import java.util.*;public class Main { public static void main(Stri..

[백준] 2751 수 정렬하기 2, java

2751번: 수 정렬하기 2첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.www.acmicpc.net백준의 실버5 문제입니다. 이전에 풀었던 2750문제와 내용은 같지만 입력에 주어질 수 있는 수의 범위가 많이 증가했습니다. 그렇기 때문에 이전의 코드로 시도를 해봤지만 시간초과가 나타나게 됩니다. import java.util.*;public class Main { public static void main(String args[]){ Scanner sc = new Scanner(System.in); int n = sc.ne..

[백준] 2750 수 정렬하기, java

2750번: 수 정렬하기첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.www.acmicpc.net백준의 브론즈2 문제입니다. 입력 받은 문자들을 정렬하여 그대로 출력하면 되는 문제입니다. 최대 데이터의 개수가 1000개로 그렇게 크지 않기 때문에 Scanner를 이용하여 입력을 받았고 Arrays.sort()를 이용하여 정렬하여 그대로 출력하였습니다. import java.util.*;public class Main { public static void main(String args[]){ Scanner sc = new Scanner(System.in)..

[백준] 1920 수 찾기, java

1920번: 수 찾기첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들www.acmicpc.net백준의 실버4 문제입니다. 문제 내용은 배열 내에 특정 숫자가 존재하는지 안하는지 판단하는 아주 간단한 문제라 브론즈 문제라고 생각할 수 있지만 그렇지 않은 이유가 있었습니다. import java.util.*;import java.io.*;public class Main { static int N, M; public static void main(String args[]) throws IOExcept..