프로그래밍과 논리 / 수학(명제문제)
🚨 해당 문제의 출처는 SWEA 아카데미입니다. 1 다음 명제들이 항진명제라는 것을 진리표를 이용해서 보이시오. 1) ~(~p ∧ q) ∨ q 2) (~p ∨ q) ∨ (p ∧ ~q) 2 다음 명제들이 모순명제라는 것을 진리표를 이용해서 보이시오. 1) (~p ∨ q) ∧ (p ∧...
🚨 해당 문제의 출처는 SWEA 아카데미입니다. 1 다음 명제들이 항진명제라는 것을 진리표를 이용해서 보이시오. 1) ~(~p ∧ q) ∨ q 2) (~p ∨ q) ∨ (p ∧ ~q) 2 다음 명제들이 모순명제라는 것을 진리표를 이용해서 보이시오. 1) (~p ∨ q) ∧ (p ∧...
📌문제 💪아이디어 비내림차순 배열 arr[i-1] <= arr[i]로 정렬되어야 하기 때문에 입력받은 배열을 오름차순으로 정렬한다. 부분 수열 만들기 비내림차순으로 정렬되어있기 때문에 현재위치보다 왼쪽에 있는 수는 작거나 같다. 중복되는 수를 포함한 배열은 현재 위치부터 탐색할 것이기 때문에 왼쪽에 있는 수는...
📌문제 💪아이디어 해당 위치에서 움직이기 움직이는 방법은 앞으로 걷기(x+1), 뒤로 걷기(x-1), 순간이동하기(2*x)로, 세 가지이다. 움직이는 방법별 소모 시간 걸을 경우 +1, 순간이동할 경우 0의 시간이 소모된다. 최소의 소모시간을 구하기 위해서는 소모시간이 적게 걸리는 움직이는 방법을 선택해야하기 때문...
📌문제 💪아이디어 아기상어 위치구하기 아기상어의 위치를 구하고 board에 있는 숫자 크기로 이동할 수있는지 체크할 때 혼동을 줄이기 위해 아기상어위치에 0을 대입한다. 사이즈별 물고기 갯수 먹을 수 있는 물고기가 남았는지 여부에 따라 이동하기 위해 사이즈별로 물고기의 숫자를 세어놓는다. 가장 가까운 먹을...
📌문제 💪아이디어 (0,0)~(i,j)누적합 구하기 해당 인덱스의 윗쪽 값은 (0,0)~(i-1,j)까지의 누적값이다. 해당 인덱스의 왼쪽 값은 (0,0)~(i,j-1)까지의 누적값이다. 윗쪽 누적값과 왼쪽값을 더하면 (0,0)~(i-1,j-1)누적값이 두 번 더해지기 때문에 한 번 빼줘야한다. ...
📌문제 💪아이디어 바이토닉 부분 수열은 기준이 되는 인덱스의 왼쪽은 증가하는 수열이고 오른쪽은 감소하는 수열이다. 그래서 증가하는 부분수열과 감소하는 부분수열을 모두 구해야한다. 자기 자신은 무조건 포함되기 때문에 [1] * n로 초기화한다. 증가하는 가장 긴 부분수열 인덱스 i가 기준일때 0~i-1까지 자신보다...
📌문제 💪아이디어 이동하기 가중치 없는 이동의 경우 bfs를 사용하여 상하좌우 이동한다. 벽 부순상태인지 체크하기 가려고하는 위치에 벽의 유무와 그 전에 어떤 상태로 방문했는지에 따라 점수가 달라진다. 현재 위치에 벽을 부순 적 X 상태로 방문한 적 없는 경우 현재 부순 적 X 상...
📌문제 💪아이디어 내장함수 pow()로 거듭제곱을 구현할 경우 시간복잡도가 O(N)이다. N이 1e6이기 때문에 O(logN)의 알고리즘을 구현해야한다. [f(a,b) = \begin{cases} a^{b//2}\ * \ a^{b//2}, & \text{if b is even} a^{b//2}\ * \ a^{b//2} \ * \ a,...
람다 람다는 함수를 간단한 식으로 표현한 방법으로, 함수의 이름을 쓰지않고 매개변수와 구현부로만 구성되어있어 익명함수이다. int min(int a, int b){ return a < b ? a : b } //함수 (int a, int b) -> a < b ? a : b //람다식 람다식 작성법 int onePlus(int...
📌문제 💪아이디어 하나의 스티커를 선택하면 상하좌우에 있는 스티커는 선택할 수 없다. 그래서 현재 스티커에서 북서쪽이나 남서쪽에 있는 스티커를 고르거나 한칸 뒤쪽 북서나 남서쪽 스티커를 고를 수 있다. 세 번째 스티커부터 두 가지 선택지가 있다. 2번을 선택하는 경우에는 이미 1.에서 고른 스...