boj [ BOJ / Python ] 14890번 경사로 이번 문제는 삼성 기출 문제로, 조건들을 따져가며 구현하는 방식으로 해결하였다. 컬럼을 확인하는 함수 chk_column과 로우를 확인하는 함수 chk_row를 작성하였다. 아래에서 위로 향하며 연속되는 수의 갯수를 DP를 이용하여 dp1에 저장한다. 위에서 아래로 향하며 연속되는 수의 갯수를 DP를 이용하여 dp2에 저장한다. 아래에서 위로 향하며 인접한 값과 비교하며 1 차이가 날 경우에... 삼성 기출pythonbojboj [BOJ] 백준 4673 - 셀프 넘버 👩🏻💻 문제 👩🏻💻 정답 코드 numbers 집합에 1부터 10000까지를 넣고, for문을 돌리면서 각 자릿수와 숫자 자체를 generated 집합에 넣어 준다. 집합을 사용함으로써 중복 없이 처리할 수 있고, 마지막에 numbers-generated으로 차집합을 구해 답을 낼 수 있다. 대신 하나씩 증가하는 순서랬으므로 sorted으로 정렬 필요 👩🏻💻 Remember sorted(... 코딩테스트python알고리즘bojboj 백준 16234번 인구 이동 cpp python 시뮬레이션 구현 문제에 bfs 한스푼 얹은 느낌의 문제네요 로직을 설명해보겠습니다 인구 이동이 없을때까지 반복하기 때문에 while문안에 코드를 작성하고 한번의 반복문마다 인구 이동이 있었는지 검사를 합니다 만약 이번 턴에 한번도 인구이동이 없다면 break문으로 나옵니다 N*N크기의 땅을 이차원 배열에 저장을 해둡니다 동시에 똑같은 크기의 이차원 배열을 0으로 채워서 만... cpppythonbojsimulationBFSBFS [백준]2513 통학 버스(자바) 또, 이 아파트 단지 주민을 위해 도로 위 한 지점에 학교 하나를 신설하였다. 각각의 아파트 단지와 학교의 위치는 도로 위의 좌표로 주어지며, 또 각 아파트 단지마다 여기에 사는 학생들의 수도 주어진다. 통학버스는 아침에 학교를 출발하여 각 아파트 단지에 있는 학생들을 태우고 학교로 다시 돌아온다. 아파트 단지 A, B, C가 각각 좌표 0, 2, 5에 있고 이 단지에 사는 학생은 각각 1,... Java알고리즘그리디boj통학 버스자바25132513 [BOJ] 2866 문자열 잘라내기 - JAVA Key Idea 입력받은 문자열들의 세로로 문자열들을 넣은 List 를 최초에 한번만 생성 가장 위의 행을 제외한 세로 문자열들에 중복이 없다면 실제로 문자열 하나를 삭제하는 것이 아닌 idx 를 증가시켜 세로 문자열들의 앞에서 하나씩 잘라준다 중복검사는 세로 문자열들을 Map 에 key 로 넣고 value는 개수로 둬서 만약 value 가 2이상이라면 중복이 발생한 것이므로 count 개수... StringbojString [boj] (s3) 9095 1,2,3 더하기 ✅ DP 구성 숫자가 같아도 순서가 다른 것은 다른 조합으로 친다. 따라서 f(n) f(n)을 정수 n 을 1,2,3의 합으로 나타내는 방법의 수라고 하고 몇가지를 구해보면 f(1)=1 f(1)=1 f(2)=2 f(2)=2 f(3)=4 f(3)=4 f(4)=7 f(4)=7 여기서 다음과 같은 규칙을 발견할 수 있다. f(4)=f(3)+f(2)+f(1)=4+2+1=7 f(4)=f(3)+f(2)... bojboj [백준] 1246_온라인판매 python 경래는 닭을 기르는데 올 겨울 달걀 풍년으로 함박 웃음을 짓고 있다. 그리고 이 달걀을 영양란으로 둔갑하여 옥션에 판매하려한다. 경래는 총 N개의 달걀이 있고, 그의 잠재적인 고객은 총 M명이다. 그리고 각각의 i번째 고객은 각자 달걀 하나를 Pi 가격 이하로 살 수 있다고 밝혔다. 경래는 영양란이라 속인 죄책감에 한 고객에게 두 개 이상의 달걀은 팔지 않기로 하였다. 하지만 위의 규칙 하에... 그리디파이썬bojpython백준boj [백준] 2839_설탕배달 python 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3... 그리디파이썬bojpython백준boj [백준] 16236_아기상어 python N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 상어에게 도... bojpythonBFS구현백준BFS [ BOJ / Python ] 15683번 감시 이번 문제는 삼성 기출 문제로 백트레킹과 구현을 통해 해결하였다. 처음에 백트레킹을 생각했지만, 브루트포스로도 해결이 가능할 것이라 생각하였고, 브루트포스로 구현을 하였다. cctv의 위치와 종류를 튜플로 하여 cctvs리스트에 담고, 이를 종류의 내림차순으로 정렬한 후에 cctv가 볼 수 있는 구간의 크기를 모두 구하여 이 중 큰 것을 따라가도록 구현하였다. 그러나 17%에서 오답처리 되었... 삼성 기출back trackingpythonbojback tracking [BOJ/C++] 2563 색종이 - 구현 bojImplementationpsImplementation [BOJ] 백준 14503 - 로봇 청소기 👩🏻💻 문제 👩🏻💻 정답 코드 처음에는 d 바꾸는 문장 아래 if문에서 0일 경우 (왼쪽이 청소되지 않은 경우)에서 result을 하나 늘렸는데 출력 예시는 잘 나오는데 자꾸 틀렸다고 해서 머리 싸매고 문제를 다시 잘 읽고 프로세스를 생각해 보니까 result를 일단 늘려야 하는 거구나 싶어서 순서를 바꿨다. (문제에 제일 첫 단계가 1. 현재 위치를 청소한다. 라고 되어 있잖아요...)... 코딩테스트python알고리즘bojboj [BOJ] 백준 15686 - 치킨 배달 👩🏻💻 문제 👩🏻💻 정답 코드 처음에는 치킨 거리가 제일 많은 치킨집을 남기는 걸로 해야 하나 했는데 그렇게 했는데도 틀린 경우가 있을 것 같아서 찾아보다가 itertools의 combinations를 써서 중복 없는 조합을 구해 각 경우 중 min 값을 내면 되는 걸 깨달았다. 라이브러리 활용 잘 할 것... 파이썬 정리 한 번 해야겠다 그래서 프로세스는 집, 치킨집 위치를 일단 chi... 코딩테스트python알고리즘bojboj 백준 16235 나무재테크 pythonsimulationbojalgorithmalgorithm BOJ 13458.시험 감독 입력 1: (시험장 수) 2: (응시자 수) 3: (총감독관이 감시할 수 있는 응시자 수) (부감독관이 감시할 수 있는 응시자 수) 주의사항 1) 최소 감독관의 수의 범위 유의 : int로 충분한가? 구현방식 1) 총감독관 먼저 응시자 수에서 감산 → 출력할 인자 += 1 2) 남은 응시자 수를 부감독관이 감시할 수 있는 응시자 수 C로 나눔 → 출력할 인자 += 위 값 3) 위 값에 C를 ... 삼성SW역량테스트기출백준알규리즘bojboj 백준 3190번 뱀 cpp python 일단 int 2차원 배열로 맵을 만들고 0,0에 뱀을 나타내는 1을 저장했습니다 사과의 위치값을 입력받아서 맵에 저장시켜두고 뱀의 현재 head 좌표값과 tail 좌표값을 변수로 만들어서 관리 해주었습니다. head와 tail 인덱스를 관리할때 주의 하실게 현재 head의 진행방향과 tail의 진행방향이 다를 수 있기 때문에 큐를 사용하여 head가 움직일때마다 큐에 방향... algorithmcppbojpythonsimulationalgorithm 백준 22865 가장 먼 곳 algorithmGraphbojpythondijkstraGraph 백준 14501 퇴사 python java cpp 퇴사날부터 역으로 얻을 수 있는 최대의 수익을 dp 테이블에 저장했습니다... cppbojpythonDPJavaDP BOJ 14501.퇴사 입력 1 : N(날짜) 2 ~ N+1 : T_i(기간) P_i(금액) 주의사항 1) STL에 정의돼있는 함수 이름과 중복되지 않게 변수 선언하기 구현방식: DFS 기반 완전탐색 1) DAY 1 ~ DAY N까지 DFS(배열 접근 0 ~ N-1) 2) DFS 함수 -종료 조건 : 탐색하려는 day가 N이상인가?(배열 접근 고려) -재귀호출 ①탐색하는 day와 해당 상담기간의 합이 N이하일 때,... 삼성SW역량테스트기출알규리즘bojDFS백준DFS [백준] 3474 - 교수가 된 현우(Python) 수학 수의 범위가 (1 <= N <= 십억) 이므로 팩토리얼을 직접 구할 수는 없다. 끝에 0이 몇 개인지 구하는 것은 인수로 10을 몇 개 포함하고 있는지 구하는 것과 같다. 예를 들어 900은 9 x 10 x 10 이므로 끝에 0이 2개이다. 하지만 팩토리얼을 직접 구할 수는 없기 때문에 소인수분해를 이용해야 한다. 10은 5와 2를 인수로 가진다. 따라서 N! 을 구하려면 몇개의 (5 ... 알고리즘bojboj [백준 1697번] 숨바꼭질 - 파이썬 pythonbojboj [ BOJ / Python ] 17142번 연구소 3 바이러스들의 위치를 저장할 리스트 viruses를 선언한다. n번 반복하는 i에 대한 for문을 돌린다. -> n번 반복하는 j에 대한 for문을 돌린다. --> 만약 grid[i][j]가 2와 같을 경우, ---> viruses에 (i, j)를 넣는다. combinations를 저장할 리스트 cases를 선언한다. get_combs 함수를 cur, result를 인자로 갖도록 선언한다. -... python삼성 기출bojback trackingBFSBFS [ BOJ / Python ] 16234번 인구 이동 이번 문제는 삼성 기출 문제로 BFS를 통해 개방할 수 있는 국경선들을 모두 체크하고, 현재 위치의 나라와 연결된 모든 나라들을 구하여 그 나라들의 인구수를 평균값으로 갱신해준다. n, l, r을 입력받는다. ground를 입력받는다. dy, dx에 4가지 방향을 저장한다. bfs함수를 sy, sx를 인자로 갖도록 선언한다. -> q를 deque로 선언한다. -> q에 (sy, sx)를 넣는... 삼성 기출pythonBFSbojBFS [boj] (s3) 11726 2xn 타일링 1. 세로 타일 (2x1)을 하나 둔다. 2. 가로 타일 (1x2)을 두개 둔다. 따라서 i 번째를 채우는 방법의 수는 2*(i타일을 채우는 방법의 수) f(i)=2*(i타일을 채우는 방법의 수) f(i)=2∗(i타일을채우는방법의수) f(n) f(n) f(0)=1, f(1)=2 f(0)=1,f(1)=2 f(i)=f(i-1)+f(i-2),(i>2) f(i)=f(i−1)+f(i−2),(i>2) ... bojboj [boj] (g2) 1525 퍼즐 ✅ BFS ✅ 최단경로 인접해 있는 네 개의 칸 중에 하나가 비어 있으면, 수를 그 칸으로 이동 이동을 통해 정리된 상태를 만들어야 함 최소 이동 횟수를 구하라 즉, 정해진 경로로만 이동할 수 있으며 최소 이동으로 특정 상태를 만족시키게 이동시켜야 하는 문제이므로 정해진 경로로만 이동하여 도착지에 도달하는 최단경로를 구하는 문제라고 볼 수 있다. 따라서 BFS 사용 주의해야 할 점은 보통의 ... bojboj BOJ/백준-10699-python bojboj [백준] 13900 - 순서쌍의 곱의 합 (Python) 수학 처음엔 조합 (combination) 을 이용해서 풀었지만 정수의 개수의 범위가 (2 ≤ N ≤ 100,000) 이기 때문에 메모리 초과가 났다. 그래서 다른 방식으로 문제를 해결했다. 만약 (1, 2, 3, 4, 5) 가 주어지면 답은 다음과 같이 구할 수 있다. 이는 분배 법칙을 이용해 이렇게 바꿀 수 있다. 그리고 이 규칙을 이용한 알고리즘은 다음과 같다. (1+2+3+4+5) 를... 알고리즘bojboj [boj] (s1) 10844 쉬운 계단 수 ✅ dp ✅ Bottom up i 번째에 올 수 있는 수는 i−1(바로 직전) 숫자가 무엇인지에 따라 다르다. i−1 i−1 번째 수도 마찬가지로 i−2 번째 수가 뭔지에 따라 다르다. 즉 모든 자리가 그 직전 숫자에 따라 영향을 받는다. i=0 에서부터 i=n-1 i=n−1 까지 차례대로 이전 수를 확인해가면서 경우의 수를 구할 수도 있지만 그러면 이미 수행했던 과정을 반복하게 되어 시간초... bojboj [boj] (s1) 9465 스티커 ✅ dp ✅ Bottom Up 인접한 스티커는 선택할 수 없다. 대각선에 위치한 스티커만 선택 가능 한 행에 하나의 스티커만 선택 가능 정의 f(i,j)=i,j f(i,j)=i,j 칸을 마지막으로 골랐을 때 스티커 점수의 최댓값 구하는 답 max(f(0,n-1),f(1,n-1)),(0:i,1:j) max(f(0,n−1),f(1,n−1)),(0:i,1:j) 초기값 f(0,0)=sticker[0... bojboj 이전 기사 보기
[ BOJ / Python ] 14890번 경사로 이번 문제는 삼성 기출 문제로, 조건들을 따져가며 구현하는 방식으로 해결하였다. 컬럼을 확인하는 함수 chk_column과 로우를 확인하는 함수 chk_row를 작성하였다. 아래에서 위로 향하며 연속되는 수의 갯수를 DP를 이용하여 dp1에 저장한다. 위에서 아래로 향하며 연속되는 수의 갯수를 DP를 이용하여 dp2에 저장한다. 아래에서 위로 향하며 인접한 값과 비교하며 1 차이가 날 경우에... 삼성 기출pythonbojboj [BOJ] 백준 4673 - 셀프 넘버 👩🏻💻 문제 👩🏻💻 정답 코드 numbers 집합에 1부터 10000까지를 넣고, for문을 돌리면서 각 자릿수와 숫자 자체를 generated 집합에 넣어 준다. 집합을 사용함으로써 중복 없이 처리할 수 있고, 마지막에 numbers-generated으로 차집합을 구해 답을 낼 수 있다. 대신 하나씩 증가하는 순서랬으므로 sorted으로 정렬 필요 👩🏻💻 Remember sorted(... 코딩테스트python알고리즘bojboj 백준 16234번 인구 이동 cpp python 시뮬레이션 구현 문제에 bfs 한스푼 얹은 느낌의 문제네요 로직을 설명해보겠습니다 인구 이동이 없을때까지 반복하기 때문에 while문안에 코드를 작성하고 한번의 반복문마다 인구 이동이 있었는지 검사를 합니다 만약 이번 턴에 한번도 인구이동이 없다면 break문으로 나옵니다 N*N크기의 땅을 이차원 배열에 저장을 해둡니다 동시에 똑같은 크기의 이차원 배열을 0으로 채워서 만... cpppythonbojsimulationBFSBFS [백준]2513 통학 버스(자바) 또, 이 아파트 단지 주민을 위해 도로 위 한 지점에 학교 하나를 신설하였다. 각각의 아파트 단지와 학교의 위치는 도로 위의 좌표로 주어지며, 또 각 아파트 단지마다 여기에 사는 학생들의 수도 주어진다. 통학버스는 아침에 학교를 출발하여 각 아파트 단지에 있는 학생들을 태우고 학교로 다시 돌아온다. 아파트 단지 A, B, C가 각각 좌표 0, 2, 5에 있고 이 단지에 사는 학생은 각각 1,... Java알고리즘그리디boj통학 버스자바25132513 [BOJ] 2866 문자열 잘라내기 - JAVA Key Idea 입력받은 문자열들의 세로로 문자열들을 넣은 List 를 최초에 한번만 생성 가장 위의 행을 제외한 세로 문자열들에 중복이 없다면 실제로 문자열 하나를 삭제하는 것이 아닌 idx 를 증가시켜 세로 문자열들의 앞에서 하나씩 잘라준다 중복검사는 세로 문자열들을 Map 에 key 로 넣고 value는 개수로 둬서 만약 value 가 2이상이라면 중복이 발생한 것이므로 count 개수... StringbojString [boj] (s3) 9095 1,2,3 더하기 ✅ DP 구성 숫자가 같아도 순서가 다른 것은 다른 조합으로 친다. 따라서 f(n) f(n)을 정수 n 을 1,2,3의 합으로 나타내는 방법의 수라고 하고 몇가지를 구해보면 f(1)=1 f(1)=1 f(2)=2 f(2)=2 f(3)=4 f(3)=4 f(4)=7 f(4)=7 여기서 다음과 같은 규칙을 발견할 수 있다. f(4)=f(3)+f(2)+f(1)=4+2+1=7 f(4)=f(3)+f(2)... bojboj [백준] 1246_온라인판매 python 경래는 닭을 기르는데 올 겨울 달걀 풍년으로 함박 웃음을 짓고 있다. 그리고 이 달걀을 영양란으로 둔갑하여 옥션에 판매하려한다. 경래는 총 N개의 달걀이 있고, 그의 잠재적인 고객은 총 M명이다. 그리고 각각의 i번째 고객은 각자 달걀 하나를 Pi 가격 이하로 살 수 있다고 밝혔다. 경래는 영양란이라 속인 죄책감에 한 고객에게 두 개 이상의 달걀은 팔지 않기로 하였다. 하지만 위의 규칙 하에... 그리디파이썬bojpython백준boj [백준] 2839_설탕배달 python 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3... 그리디파이썬bojpython백준boj [백준] 16236_아기상어 python N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 상어에게 도... bojpythonBFS구현백준BFS [ BOJ / Python ] 15683번 감시 이번 문제는 삼성 기출 문제로 백트레킹과 구현을 통해 해결하였다. 처음에 백트레킹을 생각했지만, 브루트포스로도 해결이 가능할 것이라 생각하였고, 브루트포스로 구현을 하였다. cctv의 위치와 종류를 튜플로 하여 cctvs리스트에 담고, 이를 종류의 내림차순으로 정렬한 후에 cctv가 볼 수 있는 구간의 크기를 모두 구하여 이 중 큰 것을 따라가도록 구현하였다. 그러나 17%에서 오답처리 되었... 삼성 기출back trackingpythonbojback tracking [BOJ/C++] 2563 색종이 - 구현 bojImplementationpsImplementation [BOJ] 백준 14503 - 로봇 청소기 👩🏻💻 문제 👩🏻💻 정답 코드 처음에는 d 바꾸는 문장 아래 if문에서 0일 경우 (왼쪽이 청소되지 않은 경우)에서 result을 하나 늘렸는데 출력 예시는 잘 나오는데 자꾸 틀렸다고 해서 머리 싸매고 문제를 다시 잘 읽고 프로세스를 생각해 보니까 result를 일단 늘려야 하는 거구나 싶어서 순서를 바꿨다. (문제에 제일 첫 단계가 1. 현재 위치를 청소한다. 라고 되어 있잖아요...)... 코딩테스트python알고리즘bojboj [BOJ] 백준 15686 - 치킨 배달 👩🏻💻 문제 👩🏻💻 정답 코드 처음에는 치킨 거리가 제일 많은 치킨집을 남기는 걸로 해야 하나 했는데 그렇게 했는데도 틀린 경우가 있을 것 같아서 찾아보다가 itertools의 combinations를 써서 중복 없는 조합을 구해 각 경우 중 min 값을 내면 되는 걸 깨달았다. 라이브러리 활용 잘 할 것... 파이썬 정리 한 번 해야겠다 그래서 프로세스는 집, 치킨집 위치를 일단 chi... 코딩테스트python알고리즘bojboj 백준 16235 나무재테크 pythonsimulationbojalgorithmalgorithm BOJ 13458.시험 감독 입력 1: (시험장 수) 2: (응시자 수) 3: (총감독관이 감시할 수 있는 응시자 수) (부감독관이 감시할 수 있는 응시자 수) 주의사항 1) 최소 감독관의 수의 범위 유의 : int로 충분한가? 구현방식 1) 총감독관 먼저 응시자 수에서 감산 → 출력할 인자 += 1 2) 남은 응시자 수를 부감독관이 감시할 수 있는 응시자 수 C로 나눔 → 출력할 인자 += 위 값 3) 위 값에 C를 ... 삼성SW역량테스트기출백준알규리즘bojboj 백준 3190번 뱀 cpp python 일단 int 2차원 배열로 맵을 만들고 0,0에 뱀을 나타내는 1을 저장했습니다 사과의 위치값을 입력받아서 맵에 저장시켜두고 뱀의 현재 head 좌표값과 tail 좌표값을 변수로 만들어서 관리 해주었습니다. head와 tail 인덱스를 관리할때 주의 하실게 현재 head의 진행방향과 tail의 진행방향이 다를 수 있기 때문에 큐를 사용하여 head가 움직일때마다 큐에 방향... algorithmcppbojpythonsimulationalgorithm 백준 22865 가장 먼 곳 algorithmGraphbojpythondijkstraGraph 백준 14501 퇴사 python java cpp 퇴사날부터 역으로 얻을 수 있는 최대의 수익을 dp 테이블에 저장했습니다... cppbojpythonDPJavaDP BOJ 14501.퇴사 입력 1 : N(날짜) 2 ~ N+1 : T_i(기간) P_i(금액) 주의사항 1) STL에 정의돼있는 함수 이름과 중복되지 않게 변수 선언하기 구현방식: DFS 기반 완전탐색 1) DAY 1 ~ DAY N까지 DFS(배열 접근 0 ~ N-1) 2) DFS 함수 -종료 조건 : 탐색하려는 day가 N이상인가?(배열 접근 고려) -재귀호출 ①탐색하는 day와 해당 상담기간의 합이 N이하일 때,... 삼성SW역량테스트기출알규리즘bojDFS백준DFS [백준] 3474 - 교수가 된 현우(Python) 수학 수의 범위가 (1 <= N <= 십억) 이므로 팩토리얼을 직접 구할 수는 없다. 끝에 0이 몇 개인지 구하는 것은 인수로 10을 몇 개 포함하고 있는지 구하는 것과 같다. 예를 들어 900은 9 x 10 x 10 이므로 끝에 0이 2개이다. 하지만 팩토리얼을 직접 구할 수는 없기 때문에 소인수분해를 이용해야 한다. 10은 5와 2를 인수로 가진다. 따라서 N! 을 구하려면 몇개의 (5 ... 알고리즘bojboj [백준 1697번] 숨바꼭질 - 파이썬 pythonbojboj [ BOJ / Python ] 17142번 연구소 3 바이러스들의 위치를 저장할 리스트 viruses를 선언한다. n번 반복하는 i에 대한 for문을 돌린다. -> n번 반복하는 j에 대한 for문을 돌린다. --> 만약 grid[i][j]가 2와 같을 경우, ---> viruses에 (i, j)를 넣는다. combinations를 저장할 리스트 cases를 선언한다. get_combs 함수를 cur, result를 인자로 갖도록 선언한다. -... python삼성 기출bojback trackingBFSBFS [ BOJ / Python ] 16234번 인구 이동 이번 문제는 삼성 기출 문제로 BFS를 통해 개방할 수 있는 국경선들을 모두 체크하고, 현재 위치의 나라와 연결된 모든 나라들을 구하여 그 나라들의 인구수를 평균값으로 갱신해준다. n, l, r을 입력받는다. ground를 입력받는다. dy, dx에 4가지 방향을 저장한다. bfs함수를 sy, sx를 인자로 갖도록 선언한다. -> q를 deque로 선언한다. -> q에 (sy, sx)를 넣는... 삼성 기출pythonBFSbojBFS [boj] (s3) 11726 2xn 타일링 1. 세로 타일 (2x1)을 하나 둔다. 2. 가로 타일 (1x2)을 두개 둔다. 따라서 i 번째를 채우는 방법의 수는 2*(i타일을 채우는 방법의 수) f(i)=2*(i타일을 채우는 방법의 수) f(i)=2∗(i타일을채우는방법의수) f(n) f(n) f(0)=1, f(1)=2 f(0)=1,f(1)=2 f(i)=f(i-1)+f(i-2),(i>2) f(i)=f(i−1)+f(i−2),(i>2) ... bojboj [boj] (g2) 1525 퍼즐 ✅ BFS ✅ 최단경로 인접해 있는 네 개의 칸 중에 하나가 비어 있으면, 수를 그 칸으로 이동 이동을 통해 정리된 상태를 만들어야 함 최소 이동 횟수를 구하라 즉, 정해진 경로로만 이동할 수 있으며 최소 이동으로 특정 상태를 만족시키게 이동시켜야 하는 문제이므로 정해진 경로로만 이동하여 도착지에 도달하는 최단경로를 구하는 문제라고 볼 수 있다. 따라서 BFS 사용 주의해야 할 점은 보통의 ... bojboj BOJ/백준-10699-python bojboj [백준] 13900 - 순서쌍의 곱의 합 (Python) 수학 처음엔 조합 (combination) 을 이용해서 풀었지만 정수의 개수의 범위가 (2 ≤ N ≤ 100,000) 이기 때문에 메모리 초과가 났다. 그래서 다른 방식으로 문제를 해결했다. 만약 (1, 2, 3, 4, 5) 가 주어지면 답은 다음과 같이 구할 수 있다. 이는 분배 법칙을 이용해 이렇게 바꿀 수 있다. 그리고 이 규칙을 이용한 알고리즘은 다음과 같다. (1+2+3+4+5) 를... 알고리즘bojboj [boj] (s1) 10844 쉬운 계단 수 ✅ dp ✅ Bottom up i 번째에 올 수 있는 수는 i−1(바로 직전) 숫자가 무엇인지에 따라 다르다. i−1 i−1 번째 수도 마찬가지로 i−2 번째 수가 뭔지에 따라 다르다. 즉 모든 자리가 그 직전 숫자에 따라 영향을 받는다. i=0 에서부터 i=n-1 i=n−1 까지 차례대로 이전 수를 확인해가면서 경우의 수를 구할 수도 있지만 그러면 이미 수행했던 과정을 반복하게 되어 시간초... bojboj [boj] (s1) 9465 스티커 ✅ dp ✅ Bottom Up 인접한 스티커는 선택할 수 없다. 대각선에 위치한 스티커만 선택 가능 한 행에 하나의 스티커만 선택 가능 정의 f(i,j)=i,j f(i,j)=i,j 칸을 마지막으로 골랐을 때 스티커 점수의 최댓값 구하는 답 max(f(0,n-1),f(1,n-1)),(0:i,1:j) max(f(0,n−1),f(1,n−1)),(0:i,1:j) 초기값 f(0,0)=sticker[0... bojboj 이전 기사 보기