[문제] https://www.acmicpc.net/problem/2468 [처음 생각] 보고 먼저 min 높이와 max 높이를 구해서 min부터 max까지 높이 따져서 매번의 안전 지역을 세서 max값을 갱신해주면 되겠다고 생각은 했는데, 이게 왠지 시간초과 날거같아서 답지 찾아봤는데... [풀이] 내가 생각한 방식이 정답이었다. 시간이 모자라서 지금 다른 방식이 당연히 맞을 것 같아서 답지 찾아본건데...원래는 visited 배열을 int형으로 선언해서 매번의 tmpAns를 구하려고 했는데 그렇게 하면 visited 배열에서 max값을 또 찾는 과정을 넣어야 하니까 그냥 boolean 배열로 선언하고, 따로 tmpAns 변수를 ++ 하는 방식으로 했다. [Code] https://github.com/..
[문제] https://www.acmicpc.net/problem/14499 [처음 생각] 주사위를 동.서.남.북으로 굴릴때 일반적으로 방향만 바꾸면 된다는걸 생각하지 못했다. 애초에 주사위 배치도가 주어진걸 보고 주사위 자료구조를 짜서 방향만 바꿔서 굴리면 된다는걸 알았어야 했는데....ㅜ [풀이] 1. 기본 주사위 배치표 dice 배열을 만든다. 2. 명령을 입력받으면서 그 명령의 방향으로 칸을 이동한 좌표를 구한다. 3. 굴려진 주사위 배치표 ndice 배열을 새로 만들고, 주사위를 굴려서 ndice 배열을 구한다. - 만약 동쪽이라면, 2자리와 5자리는 그대로고 나머지 배치만 반대로 된다. 4. 그리고 맵의 숫자가 0인지 아닌지를 따져서 문제의 조건대로 처리한다. 5. 주사위를 dice 배열로 갱..
[문제] https://www.acmicpc.net/problem/2206 [처음 생각] https://www.acmicpc.net/problem/2178 보자마자 이 문제인줄 알았다. 대신 이 문제에서 벽을 한번 부술 수 있다는 기회가 있다는 점이 차이점이었다. 벽을 한번 부술 수 있는 대신에 가장 최단으로 갈 수 있는 거리를 찾아야 한다. 내가 소스를 짜봤을 때는 탐색하는 다음 방향의 블럭이 0일 때와 1일 때로 나눠서 생각했다. 그리고 그 안에서 전의 블럭(바로 큐에서 꺼낸 블럭)이 벽을 뚫고 온 상태인지 아닌지를 체크하며 벽을 뚫는 횟수 변수인 wall을 사용할 예정이었다. [풀이] 결국 소스를 참고 했는데...내가 생각한 것처럼 다음 방향의 블럭이 0일 때와 1일 때로 나눠서 하는건 맞았다. 대..
[문제] https://www.acmicpc.net/problem/12100 [처음 생각] 삼성전자 작년 하반기 오전반 시험문제라고 알고있는데 아닐수도 있음! 블럭을 옮기는게 애매하다고 생각했다. 위쪽 방향으로 옮긴다면, 맨 위에서부터 생각해야하는데 옮기면서 그 다음 블럭을 앞으로 당겨줘야하는게 구현하려니 너무 복잡해졌다. 결국 소스 참고함... [풀이] 사진은 잘 보이지 않지만 내가 보기위해 정리용으로 올림! 전체 함수 구조를 봤을 때, main함수에서 moving함수를 호출하고 그 안에서 재귀호출하는 형태로 짰다. number라는 매개변수를 넣어서 5번까지만 돌아가는 것을 제한해두고 매번 5번까지 돌때마다 max_local을 구해서 결국 전체 max를 구하도록 한다. 방향은 네가지로 나눈다. 위/아래..
[문제] https://www.acmicpc.net/problem/13460 [처음 생각] 처음에는 맵을 보고 BFS로 풀어야겠다고 생각했는데, 빨간 구슬과 파란 구슬 모두를 움직여야 하므로 Queue가 2개여야 하나?? 라는 생각이 들었다. 그래서 그럼 BFS로 풀지 않고 단순하게 시뮬레이션으로 구현하고 예외처리해주는식으로 문제를 풀려고 했다. 근데 그 안에서 벽/앞에 구슬이 막고 있을 때/구멍을 만났을 때로 나눠서 생각하려니 너무 복잡하고 알고리즘이 짜이지 않아서 애먹었다... [풀이] 결국 째로탈출2 문제가 아닌 원래 째로탈출 문제의 코드를 참고해서 풀었다. BFS로 풀었고 나는 처음에 빨간 구슬과 파란 구슬을 한꺼번에 움직이기 위해서 while(true)문을 하나에 다 몰아서 쓰려고 했다. 근데 ..
[문제] https://www.acmicpc.net/problem/10809 [풀이] 알파벳 a의 아스키코드값은 97알파벳 A의 아스키코드값은 65 애초에 -1로 alpha배열을 초기화한다.입력받은 단어의 각 알파벳의 아스키코드값에서 97을 빼주면 알파벳의 위치가 나오므로 거기에 현재 위치값을 넣는다. 단 같은 알파벳이 나와도 맨 처음 위치가 저장되야 하므로 alpha배열값이 -1일때만 위치를 저장한다. [Code] https://github.com/dbwls94/gomulsang/blob/youjin/BOJ/src/boj_10809/FindAlpha.java
[문제] https://www.acmicpc.net/problem/7569 [처음 생각] 처음에는 단순히 2차원 토마토처럼 6방향으로 돌면서 체크하면 되겠다고 생각했다. 그래서 그렇게 풀었는데 틀렸다... [풀이] 지난번 2차원 토마토 문제와 같은 방식으로 푸려다가 틀리긴했지만 같은 방식으로 다시 풀면 맞을 것 같다...! 대신 이번엔 visited 배열로 익은 날짜를 세는게 아니라 따로 토마토 위치를 저장하는 Uni 클래스 자체에 날짜를 세는 변수 cnt를 넣어서 변화시켰다. 그리고 계속해서 객체의 cnt값을 결과값에 갱신하며 모두 익었을 때의 날 수를 출력하도록 했다. 큐를 확인하는 while문에서 익지 않은 토마토를 만나면 애초에 세어 놓은 익지 않은 토마토 개수에서 1개씩 빼주고 그 토마토를 익히..
[문제] https://www.acmicpc.net/problem/7576 [처음 생각] 이전 BFS 문제와 마찬가지로 토마토 상자를 기준으로 상.하.좌.우 방향의 토마토들을 확인하면서 익지 않았고 방문하지 않았다면 그 토마토를 익히고 큐에 넣어주는 과정을 반복하면서 visited 배열의 익히는 날짜를 하루씩 늘려간다. [풀이] 풀었을 때, BFS 알고리즘 자체는 맞았다. 다만 문제에서 원하는 애초에 모두 익은 경우, 결과적으로 모두 익을 수 없는 경우, 모두 익었을 때의 걸린 날의 수를 출력하는 경우에서 틀렸다. 처음에 visited 배열의 초기값을 0으로 했었는데, 0이 아닌 -1로 두고 시작한다. 0으로 하지 않는 이유는 초기값을 0으로 두어도 어짜피 나중에 결과 count에서 1을 빼주기 때문에 ..
- Total
- Today
- Yesterday
- 위상정렬
- 10809
- 이진 검색
- acmpicpc
- 자료구조
- BOJ
- 1085
- 약수
- combination
- 13460
- parametric search
- lottie
- 조합 알고리즘
- spring
- ACM Craft
- 2048 game
- mybatis
- 12100
- 알고리즘
- Java
- 째로탈출2
- acmicpc
- 1157
- 알파벳 찾기
- 7569
- 이진 탐색
- 1037
- 파라메트릭
- 7576
- 단어 공부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |