Algorithem/백준 PS with code

Algorithem/백준 PS with code

백준 #14891 - 톱니바퀴 : 구현

(python3) 구현 아이디어 이 문제의 경우 4개의 톱니를 동시에 회전시키는 것 처럼 구현해줄 필요가 있었습니다. 톱니 상황을 하나씩 업데이트 하다 보면 의도한 방향으로 상호작용이 일어나지 않을 수 있기 때문에 이를 고려해줄 필요가 있습니다. 크게 2단계로 구현을 분리했습니다. 1단계 : N번 톱니를 r 방향으로 회전시킬 때, 현재 상황에서 회전될 모든 톱니들과 각 톱니의 회전 방향을 구한다. 이 단계에서는 현재 상황에서 톱니들의 사이에 일어날 상호작용만 체크하고 톱니 상황을 업데이트하지는 않습니다. 2단계 : 1단계에서 구한 정보를 토대로 톱니 방향을 회전시켜 톱니 상황을 업데이트한다. 구현 디테일 톱니의 상태를 배열로 나타내는데, 회전할때마다 배열의 모든 값을 밀거나 당기기는 방향으로 업데이트를 ..

Algorithem/백준 PS with code

백준 #14888 - 연산자 끼워넣기 : 재귀

(python3) 여러 풀이법이 있겠지만, 매 트라이얼에 같은 행위를 반복하고, 이전 행위들이 다음 행위에 영향을 주기 때문에 재귀로 해결했습니다. 4가지 연산자를 함수화하고 함수를 배열에 담아 접근하여 연산자별 사용 횟수 카운팅 처리와 연산 구현을 같은 인덱스로 처리할 수 있게 하여 좀 더 원활히 코드를 작성할 수 있도록 했습니다. 재귀를 사용할 때는 하나의 층에서 변하면 안되지만, 다음 층으로는 변화시켜 넘겨야할 변수들은 새롭게 할당하여 처리하고, 자료구조의 경우 copy 메서드를적절히 사용해주어야 의도치 않은 에러를 피할 수 있습니다. 구현 코드 # https://www.acmicpc.net/source/60887220 # 23.05.17 8:51 AM! def solution(input) : de..

Algorithem/백준 PS with code

백준 #14501 - 퇴사 : DP

(구현 : python3) DP : "케이스마다 최적의 해를 저장하면서 다른 케이스의 최적해를 활용해여 새로운 케이스의 최적해를 찾아나가는 방식" 이라고 설명할 수 있습니다. 아이디어는 다음과 같습니다. X일부터 일을 시작했을 때 가장 많이 벌 수 있는 액수를 구해서 배열에 저장한다고 해봅시다. (이걸 해결하면 우리가 원하는 결과값은 X=1 입니다.) 이때 우리는 X+1 일부터 마지막일 까지 각각의 날짜부터 일을 시작했을때 가장 많이 벌 수 있는 액수를 이미 알고 있습니다. 이때 우리가 구하려고 하는 건, X일에 시작되는 상담을 한다 / 안한다 오로지 두가지 경우 입니다. 상담을 하는 경우, 구하려는 값은 "X일에 시작한 상담의 상담비" + "그 상담이 끝나는 다음날부터 일을 시작했을 때 가장 많이 벌 ..

Algorithem/백준 PS with code

백준 #16235 - 나무 재테크 : 구현, 시간

사계절을 차례차례 구현하고, 시간이 오래 걸릴만한 요소들을 제거해주면 되는 문제였습니다. 이슈 1. 문제 해석 (r,c) 와 (x,y) 문제에서 "각각의 칸은 (r, c)로 나타내며" 와 "처음 두 개의 정수는 나무의 위치 (x, y)를 의미하고," 에서 x y 해석이 헷갈렸는데 r = x, c = y 로 해석해야합니다. r = y, c = x 로 해석하고 코딩해도 예제 케이스는 다 통과되기 때문에 주의하세요! 예제 3~8 까지가 K 만 1씩 증가시키는 테케이고 K=6 까지 제공됩니다. x,y 해석을 잘못하면 K=7 부터 답이 다르게 도출됩니다. 이슈 2. 시간 초과 저같은 경우는 예제 3의 K=1000 으로 증가했을 때 time 이 "0.022~0.024" 일때 시간 초과, "0.0202~0.0215"..

Algorithem/백준 PS with code

백준 #14499 - 주사위 굴리기 : 구현

구현 언어 : python3 "굴러다니는 주사위를 어떻게 배열로 표현할 것인가" 가 핵심인 문제입니다. 배열로 표현하기 때문에 사실상 전개도를 최신화해서 가져가는 것이고, 저는 인덱스를 옮기는 방식으로 표현했습니다. (동) 방향으로 굴릴땐 인덱스 번호가 항상 아래와 같이 섞입니다. 나머지 3방향에 대해서도 마찬가지 방식을 적용할 수 있습니다. 이걸 코드로 표현하면 다음과 같습니다. def move_net(i, net) : # 코드에서는 윗면을 생략하여 5면만 표현했습니다. (윗면=7-아랫면) if i==1: # 동 nnet = [net[1],7-net[0],net[0],net[3],net[4]] elif i==2: # 서 nnet = [net[2],net[0],7-net[0],net[3],net[4]] ..

Algorithem/백준 PS with code

백준 #10844 - 쉬운 계단 수 : 점화식

https://www.acmicpc.net/problem/10844 이걸 어떻게 다이나믹으로 풀 것이냐..! ​ 다이나믹 저장에는 다음과 같은 배열을 사용한다. save[첫숫자][길이] 여기에는 숫자열의 첫 숫자와 그 길이에 해당하는 계단 수의 갯수를 저장한다. 초기값은 save[0~9][1] = 1 점화식은 save[x][l] = save[x-1][l-1] + save[x+1][l-1] 물론 첫 숫자 가 0~9 범위가 넘어가면 안된다. 이것만 주의하면서 코딩하면 끝

jamong5
'Algorithem/백준 PS with code' 카테고리의 글 목록 (9 Page)