알고리즘/백준 62

[BaekJoon] 백준 17825번 _ 주사위 윷놀이 for JAVA

https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 첫째 줄에 주사위에서 나올 수 10개가 순서대로 주어진다. www.acmicpc.net 백트래킹으로 풀었다. 생각보다 어려운 문제이다. 진짜로.... 윷놀이 판을 어떻게 설계할지가 제일 고민되는 문제였고 생각 없이 풀었더니 3번 테케에서 틀렸다~! 일반 계속 틀린 이유 1. hashMap 사용하고 value를 배열로 넣어놓았는데 get으로 value값을 받아오니 그 배열을 사용하면 map에 있는 value값도 바뀌었다. 배열이라서 그런가봄 것참;; 2. 이것때문에 코드 고쳤는데 이유를 생각 안하고 고쳤더니 같은 오류가 다시 발생함. 근데 이유를 몰랐기 때문에 저 이유일거라고 짐작을 못함 그래서 일일히 디버깅하..

알고리즘/백준 2022.11.20

[BaekJoon] 백준 16637번 _ 괄호 추가하기 for JAVA

https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 첫째 줄에 수식의 길이 N(1 ≤ N ≤ 19)가 주어진다. 둘째 줄에는 수식이 주어진다. 수식에 포함된 정수는 모두 0보다 크거나 같고, 9보다 작거나 같다. 문자열은 정수로 시작하고, 연산자와 정수가 www.acmicpc.net 이 문제 생각보다 굉장히 어려웠다. ㄷㄷㄷ 머리야 돌아가!!! 순서 0. 저장할 때 숫자와 연산자를 따로 저장함 - dfs로 완전 탐색을 돌건데 괄호를 치거나 안치거나 둘 중 하나잖음 그래서 따로 재귀 타야함 - index로 훑을건 연산자! - 연산자 인덱스 0일 때 num 0,1과 함께 계산, 1일 때 num 1,2 계산.. 등등 - 첫 번째 숫자는 result에 미리 넣어놓는다..

알고리즘/백준 2022.11.13

[BaekJoon] 백준 19236번 _ 청소년 상어 for JAVA

https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 진짜 별거 아닌데 요즘 코로롱 때문에 알고리즘 며칠 쉬었더니 뇌가 굳어버려서 엄청 오래걸렸다. 핑계인가... 아무튼 특별할 것 없는 구현 + 백트래킹을 가미한 문제이다. 상어가 잡아먹을 수 있는 물고기가 여러마리이기 때문에 dfs로 모든 경우의 수를 확인해야 한다. 처음에 그냥 그리디하게 큰거 잡아먹다가... 아닌걸 깨닫고 백트래킹으로 바꾸는데 이게 물고기 움직임 -> 상어 움직..

알고리즘/백준 2022.11.13

[BaekJoon] 백준 3190번 _ 뱀 for JAVA

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 재미있는 시뮬레이션 문제였다~! 그냥 문제 그대로 풀면 된다. 나는 사과를 set에 넣고 방향을 바꾸는 구간은 map에 넣었다. 참고로 set 안에 배열 형태로 넣으면 비교를 못함. 예를 들어 set 형태로 만들고 set.add(new int[]{}) 이런 형태로 집어넣었다면 set.contains(new int[]{}) 형태로 비교가 안된다. 배열이니까 주소값이 다르기 때문에... 그래서 key를 만들..

알고리즘/백준 2022.11.06

[BaekJoon] 백준 15644번 _ 구슬 탈출 3 for JAVA

구슬탈출2: https://ticssfm.tistory.com/185 [BaekJoon] 백준 13460번_구슬탈출 2 for JAVA https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의.. ticssfm.tistory.com https://www.acmicpc.net/problem/15644 15644번: 구슬 탈출 3 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이..

알고리즘/백준 2022.10.30

[BaekJoon] 백준 13460번_구슬탈출 2 for JAVA

https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 하루종일 고민하고 디버깅 4시간 했는데 못풀었다! 딴것보다 visited 처리를 어떻게 해야할지 감이 전혀 안잡혀서ㅠㅠ 그리고 사실 빨간색 공의 움직임만 고려하고 파란색 공은 무지성 움직이려고 했어서... 편협한 시각의 패배였다... + 문제 제대로 안읽음 여튼 그래서 남의거 참고함 visited 배열을 4차원으로 만들어서 빨간 공과 파란 공의 위치를..

알고리즘/백준 2022.10.30

[BaekJoon] 파이프 옮기기 1 for JAVA

https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 증말증말 어려운 문제ㅠㅠ 처음에는 완전탐색으로 모든 모양을 돌리면서 만약에 ㅡ모양일 때 \ 모양을 (1,1)에서 두었다면 dp 배열에 x y 현재모양 다음모양 이런식으로 열을 만들어서 메모이제이션을 하려고 했었다. 그런데 구현하다가 이건 아닌 것 같아서 관둠 그래서 결국 다른 사람들의 도움을 받아.... 겨우 해결(이해)한 문제이다. 일단 dp를 쓰기 위해 배열을 어떻게 ..

알고리즘/백준 2022.10.02

[BaekJoon] 백준 11053번_가장 긴 증가하는 부분 수열 for JAVA

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 방심했다가 여러번 틀린 문제이다. 일단 부분수열..이라고 했지만 N의 크기가 1,000까지이기 때문에 부분집합을 이용하면 큰일난다는 직감이 온다. 그렇다면 for문을 사용해서 훑어야할 것 같다! 그래서 처음에는 1000 x 1000 = 1,000,000 이므로 2중 for문을 이용해서 앞에꺼보다 뒤에꺼가 크면 cnt+1..

알고리즘/백준 2022.08.21

[BaekJoon] 백준 2493번_탑 for JAVA

https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 내 탑보다 높이가 같거나 큰 탑의 인덱스를 차례대로 출력하는 문제이다. 탑의 개수가 500,000개 이길래 되지 않을까? 하고 for문으로 갈겼는데 시간 초과가 떴다. 틀린 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokeni..

알고리즘/백준 2022.08.07

[BaekJoon] 백준 11866번 _ 요세푸스 문제 0.Python

https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net n,k = map(int, input().split()) people = [i for i in range(1, n + 1)] answer = [] while len(people) != 0: for _ in range(k-1): people.append(people[0]) people.pop(0) answer.append(people.pop(0)) print('') # print(''.format(', '.join(map(str, answer)))) # 이거 왜 안될까 이렇게 풀었다..

알고리즘/백준 2022.04.15