본문 바로가기

알고리즘42

[백준 16987] 계란으로 계란치기(JAVA/C++) https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱걸이를 5회 하는 기적의 운동 루틴을 통해 뇌와 근육을 동시에 단련한다. 근육을 단련할 때 식단이 정말로 중요하다는 것을 아는 인범이는 탄수화물이 많은 밥이나 빵 따위의 아침 식사를 대신해 단백질이 많은 계란찜을 해먹는다. 계란찜을 먹기 위해서는 계란을 깨야 하 www.acmicpc.net 이 문제도 이전에 C++로 풀어본 문제이다. 내구성 배열(S)과 무게 배열(W)을 만들어서 내구성 배열이 0이하인 것은 깨진.. 2020. 3. 7.
[백준 14502] 연구소(JAVA/C++) https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. www.acmicpc.net 이전에 C++로 풀었던 문제이다. JAVA로 다시 풀어보았다. map 입력 받을 때 벽을 세울 수 있는 공간이면 ArrayList(C++은.. 2020. 3. 6.
[SWEA 5684] 운동(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRxnnah2sDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 처음에 dfs로 잘못 생각해서 스택오버플로우가 났다. 다익스트라로 다시 생각해서 풀었다. 테스트케이스에 공백값들이 들어 있어서 BufferedReader를 사용하면 런타임에러가 뜨길래, Scanner로 입력을 받았다. if(nowDist>ans) continue; 구문을 추가해주니 시간은 반절이상 줄었고, 메모리도 줄었다. import java.io.BufferedReader; import java.. 2020. 3. 5.
[백준 2563] 색종이(JAVA) https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. www.acmicpc.net 색종이 좌표를 받으면서, 이전에 색칠된 자리가 아니면 카운트를 증가시키면 되는 간단한 문제이다. import java.io.BufferedReader; .. 2020. 3. 5.
[백준 13460] 구슬 탈출2(JAVA) https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' 로 이루어져 있다. '.'은 빈 칸을 의미하고, '#'은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, 'O'는 구멍의 위치를 의미한다. 'R'은 빨간 구슬의 위치, 'B'는 파란 구슬의 위치이다. 입력되는 모든 보드 www.acmicpc.net 7달 전에 풀다 포기한 문제였다..^_ㅠ 생각해줘야 하는 조건이 많아서 주의 해야 한다. 이동 후, 빨간 구슬과 파란 구슬이 겹.. 2020. 3. 5.
[SWEA 1907] 모래성 쌓기(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PNx_KACIDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 처음에는 모래가 있는 칸마다 계산하도록 했는데, 시간초과가 났다. 이를 해결하기 위해 모래가 없는 칸(.)을 기준으로 계산하도록 했다. 처음 파도가 칠 때는 젤 바깥쪽 모래가 없는 칸들만 계산을 해주고, 이후에는 깎여서 모래가 없어진 칸들로만 계산해줬다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.. 2020. 3. 4.
[SWEA 8382] 방향 전환(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWyNQrCahHcDFAVP SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com visit배열을 3차원으로 만들어서 가로, 세로방향 둘 다 체크할 수 있도록 했다. 맵이 -100부터 100이여서 좌표를 0부터 200까지받을 수 있도록 바꿔줬다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.ut.. 2020. 3. 4.
[백준 2054] 괄호의 값(JAVA) https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()( www.acmicpc.net 여는 괄호 (,[ 이면 스택에 넣어주고, 닫는 괄호면 스택의 가장 끝에 들어있는 값이 맞는 짝인지 확인해줬다. val 값을 1로 두고 , .. 2020. 3. 4.
[백준 2174] 로봇 시뮬레이션(JAVA) https://www.acmicpc.net/problem/2174 2174번: 로봇 시뮬레이션 문제 가로 A(1≤A≤100), 세로 B(1≤B≤100) 크기의 땅이 있다. 이 땅 위에 로봇들이 N(1≤N≤100)개 있다. 로봇들의 초기 위치는 x좌표와 y좌표로 나타난다. 위의 그림에서 보듯 x좌표는 왼쪽부터, y좌표는 아래쪽부터 순서가 매겨진다. 또한 각 로봇은 맨 처음에 NWES 중 하나의 방향을 향해 서 있다. 초기에 서 있는 로봇들의 위치는 서로 다르다. 이러한 로봇들에 M(1≤M≤100)개의 명령을 내리려고 한다. 각각의 명령은 순차적으로 www.acmicpc.net 위 그림과 같이 맵이 일반적인 다른 문제들과 다르게, 행번호가 밑에서 부터 1로 시작한다. 그래서 맵을 상하반전 시켜서 생각해봤다... 2020. 3. 4.