백준

    [Java/자바 백준 14999] 주사위 굴리기

    풀이 풀이에 앞서 최근에 코테를 봤는데 이 문제 비슷한게 나왔습니다. 처음으로 코테를 가서 풀어서 다른 사람 키보드 때문에 멘탈도 살살 털리구 집중을 못했네요 ㅜㅜ 핵심은 dice 리스트에 바닥 동 서 남 북 위 순으로 현재 값을 계속 바꿔주면서 담아주는 방법을 쓰겠습니다. 하나를 예로 들자면, 동쪽으로 굴리자면 바닥에 있던 0번째 인덱스 값이 서쪽으로 가서 2번째로, 동쪽에 있던 1번째 인덱스 값이 바닥으로 가서 0번째로, 서쪽에 있던 2번째 인덱스 값이 위쪽으로 가서 5번째로, 남쪽에 있던 3번째 인덱스 값은 그대로 북쪽에 있던 4번째 인덱스 값도 그대로, 마지막으로 위쪽에 있던 5번째 인덱스 값은 동으로 이동하게 됩니다. 나머지 서 남 북으로 이동할 때에 맞춰 인덱스 값을 변경해주고 현재 위치에 맵..

    [JAVA/자바 10026 백준] 적록색약

    https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 풀이 일반적인 bfs 문제 bfs 함수 부분을 한번만 쓰려고 적록색약 아닐때 version=true, 적록색약 일때 version=false로 나눠주고 적록색약인 경우 R과 G를 같은걸로 보니까 R일경우 G를 봐도 큐에 넣어주고 G일경우 R을 봐도 큐에 넣어주고, check 값을 true로 바꿔줬습니다. import java.io.*; import java.util.*; class xy{ ..

    [Python/파이썬 백준 1339] 단어 수학

    https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 풀이 첫번째 시도 문자를 리스트에 담아서 긴 문자부터 9876... 내림차순으로 넣어줬는데 다른 문자에서 공통 되는 알파벳이 나오면 우선순위를 따져줬어야했는데 그러지 못함.. 두번째 시도 GCF ACDEB A=10000 *9 C=1010 *8 D=100 *7 G=100*6 E=10*5 B=1*4 자릿수를 계산하여 먼저 더해준 뒤 그 다음 내림차순으로 대입 # 단어 수학 # 흠 딕셔너리랑 리스..

    [Python/파이썬 1107 백준] 리모컨

    https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 풀이 브루트포스 문제 처음 cnt 값을 n과 100 차이 값으로 잡고 min값을 비교해나갔습니다. 범위를 1000001 를 잡은 이유는 n이 최대 500000 일때 만약 위에서부터 ex) 600000 꺼꾸로 내려오는 경우가 더 가까운 경우가 있을수도 있어서 1000001로 잡은겁니당 for 문에서 flag로 못누르는 버튼이 있다면 통과 전부 다 누를 수 있다면 n값과의 차 + i의..

    [Python/파이썬 11057 백준] 오르막 수 (다이나믹 프로그래밍)

    www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 풀이 10844 쉬운 계단수 문제랑 굉장히 유사한 문제입니다.. 유사한 문제 풀어보면 쉽게 풀리네용... 주의할 점은 첫번째 0인 숫자가 들어갈 수 있다는거구, 오름차순 숫자 갯수를 찾아야합니다. 또한 이차원 리스트 사용 숫자를 일일히 구하다보면 공통점이 있는데 마지막 수가 0일 경우 다음 숫자는 1~9가 가능하고 1일 경우 2~9 2일 경우 3~9 . . . 9는 다음 숫자..

    [Python/파이썬 백준 13913] 숨바꼭질 4 (BFS)

    www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 다른 숨바꼭질 문제랑 같지만 path를 하나 더 써줘서 nx 인덱스에 전에 방문했던 x를 넣어줬습니다. 그 뒤 path[end]에 값을 따라가다보면 start가 나오게됩니다. import sys from collections import deque input=sys.stdin.readline start,end=map(int,input().split()) graph=[-1]..

    [Python/파이썬 15990 백준] 1, 2, 3 더하기 5

    www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 1차원으로 계속 규칙을 찾으려니 30분정도 봤는데 못찾았다.. 어렵네용... 답을 참고해서 이해한 내용을 적자면 dp [1], dp[2], dp[3]에 각각 1,2,3으로 끝나는 상황을 넣는다. ex) dp[3] 은 2 1 1 2 3 이 예시와 같이 끝나는 숫자가 1일때 2일때 3일때 각각 1개씩이다 그 후 n이 만약 6인 상황에서 dp[5]에서 2로 끝난거 +1을 해주거나, 3으로 끝난거에 +1을 해주면 -> dp[6][0] dp[4]에서 1로 끝난거에 ..

    [Python/파이썬 13549 백준] 숨바꼭질 3

    www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 bfs문제입니다. 2*x, x-1, x+1인 경우에서 2*x 인 경우 : 순간이동하므로 시간 +0, appendleft해서 가장 우선순위로 설정하여 1000001까지 최단시간 미리 구해줌 x-1,x+1인 경우 : +1씩 더해줌 풀면서 시간초과 났었는데 apppendleft를 안써주고 if문으로 하나하나씩 정의해줘서 시간초과났음... import sys from collec..

    [Python/파이썬 3055 백준] 탈출

    www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 풀이 bfs 문제인데 물의 경로가 고슴도치에 영향을 주는 문제 처음 물(*)을 bfs 돌려서 check_water에 시간을 넣어줬습니다. 이 과정에서 물이 여러 개인 경우랑 두번째 물 bfs 일 경우 시간이 더 적게 걸리는 상황으로 걸러줬습니다. 다음 고슴도치(S) bfs 돌려서 물이 아예 없을 경우와 물보다 빨리 고슴도치가 움직인 경우를 걸러줬습니다. 제출과정에서 계속 10%에서 불통됐는데 반례가 D.. ... ..S 이..

    [Python/파이썬 4963 백준] 섬의 개수

    풀이 일반적인 bfs 문제인데 대각선만 추가됐습니다. bfs 돌때마다 cnt+=1 씩해줬습니다. import sys from collections import deque input=sys.stdin.readline queue=deque() dx=[0,0,1,-1, 1,1,-1,-1] dy=[1,-1,0,0, 1,-1,1,-1] def bfs(x,y): check[x][y]=True queue.append((x,y)) while queue: x,y=queue.popleft() for i in range(8): nx=x+dx[i] ny=y+dy[i] if 0