Algorithm 306

컨베이어 벨트 위의 로봇

📍 문제 설명 https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 💡 접근 문제에서 주어진 순서대로 구현하면 되는 시뮬레이션 문제였다. 벨트와 로봇이 회전할 때 로봇이 움직이는게 아닌 벨트가 움직여서 따라가는 거라 내구도의 변화가 없다. 이 부분에서 실수를 해서 시간이 꽤 오래걸렸다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io..

Algorithm/baekjoon 2022.02.23

[2022 카카오 블라인드]신고 결과 받기

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 💡 접근 처음에는 배열만을 이용해서 풀려고 했으나 3중 반복문을 써야하는 상황이 만들어졌다. 맵에 담고 2중 반복문으로 돌리니 시간초과가 뜨지 않았다. 👩‍💻 코드 import java.util.Arrays; import java.util.HashMap; class Solution { public int[] solution(String[] ..

[2021 카카오 블라인드]신규 아이디 추천

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 💡 접근 입력이 1000이하로 들어와서 통과했지 아니였으면 통과하지 못했을 것 같다. StringBuilder를 사용해도 문자열 길이를 줄이거나 삭제등의 연산이 가능하다! 👩‍💻 코드 class Solution { public String solution(String new_id) { String answer = ""; //1 new_id ..

드래곤커브

📍 문제 설명 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 💡 접근 첫 좌표가 주어지니 좌표를 하나하나 기억하지 않고 상하좌우 방향의 값을 기억해둬서 풀 수 있다. 0세대 : 0 1세대 : 0 - 1 2세대 : 0 - 1 - 2 - 1 3세대 : 0 - 1 - 2 - 1 - 2 - 3 - 2 - 1 규칙을 보면 2배씩 증가하며 -1세대의 끝점과 현제 새대의 시작점이 반시계 방향으로 대칭이 된다. 각 드래곤 커브 마..

Algorithm/baekjoon 2022.02.21

주사위 굴리기

📍 문제 설명 💡 접근 십자 모양의 주사위지만 주사위의 숫자를 담는 일차원 배열을 사용해서 방향에 따라 전개도에 맞는 숫자가 들어가도록 하였음 1. 위와 같이 동서북남에 따라 방향에 맞게 주사위의 값을 변경시켜준다. 2. 이동한 칸의 수에 따라 조건에 맞는 처리를 해준다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, r, x, y, answer, cnt; static int[] arr, dice; static long[] dp; static int[][] ..

Algorithm/baekjoon 2022.02.21

배열 돌리기 1

📍 문제 설명 💡 접근 문제에서 주어진대로 구현했다. 타 블로그는 방향을 설정하여 범위를 벗어났을 때 방향을 전환해주는 식으로 작성했는데 이렇게 푸는 방식이 문제의 의도에 좀 더 부합한 답인듯하다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, r, answer, cnt; static int[] arr; static long[] dp; static int[][] board, result; static boolean[][] visited; static int[..

Algorithm/baekjoon 2022.02.21

배열 돌리기 3

📍 문제 설명 https://www.acmicpc.net/problem/16935 16935번: 배열 돌리기 3 크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 → www.acmicpc.net 💡 접근 문제에서 주어진대로 구현하는 문제... 시간이 좀 걸렸다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class M..

Algorithm/baekjoon 2022.02.20

알고스팟

📍 문제 설명 💡 접근 방문체크하는 배열을 사용하는데 n, m, 벽부순 횟수로 중복 방문 안되도록 하였다. 벽을 적게 부순 횟수부터 계산 하기 위해서 우선순위 큐 사용하였다. -> 어차피 벽인 지점은 방문 할 수 없으므로 2차원 배열 사용해도 된다.. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, answer, cnt; static int[] arr, dis = {-1, 1, 2}; static long[] dp; static int[][] board; st..

Algorithm/baekjoon 2022.02.20

이모티콘

📍 문제 설명 💡 접근 시간, 이모티콘의 갯수, 클립보드에 저장된 이모티콘 갯수를 저장해나간다. 방문처리를 할 때 현재 이모티콘 갯수와 클립보드의 갯수에 따라서 체크해줘야한다. 이미 처리된 부분이 나중에 계산된 부분한테 덮어씌워질 수 있다. 붙여넣기를 할 때 배열의 범위에 주의해야줘야 한다. 1.클립보드의 갯수가 n보다 크면 큐에 넣으면 안된다. ->계속 저장해서 클립보드에 저장하여 출력하는 경우 n인 부분에서 최솟값이 될거다. 2.1)과 마찬가지로 2000이 넘는 부분도 큐에 넣으면 안된다. 클립보드가 999일 때 이모티콘이 1000이면 그게 답이 될 수 있다. 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import ..

Algorithm/baekjoon 2022.02.20

숨바꼭질 4

📍 문제 설명 💡 접근 자신의 부모 인덱스를 방문시 마다 입력해두고 스택 이용해서 출력하면 되는 문제 👩‍💻 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static int n, m, v, e, k, answer, cnt, second; static int[] arr, dis = {-1, 1, 2}; static long[] dp; static int[][] board; static int[] visited, parent; static int[] dx = {-1,1,0,0}; static int[] dy = {0,0,-1,1}; static ArrayList..

Algorithm/baekjoon 2022.02.20