알고리즘/백준 문풀
-
링크 : https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 크레이지 점화식 .. 처음에 아무 도움없이 풀라고 했을 때 ? 그냥 완전탐색 아니겠군 longlong 써야겠군 대충 DP 써야되나? 이러고있었음 좀더 고민했을때 .. 배웠던 내용이 생각남 + 이 문제를 조합론 강의 때 들었던 기억이 남. -> 그럼 조합론 내용중 머지? 대충 파스칼 삼각형? 조합론때 배운 이론은 순열 조합 파스칼 삼각형 이정도인데 뭐지 .. 싶었음 조합론 챕터였던거..
[얼렁뚱땅] 백준 BOJ - 1학년 (5557)링크 : https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 크레이지 점화식 .. 처음에 아무 도움없이 풀라고 했을 때 ? 그냥 완전탐색 아니겠군 longlong 써야겠군 대충 DP 써야되나? 이러고있었음 좀더 고민했을때 .. 배웠던 내용이 생각남 + 이 문제를 조합론 강의 때 들었던 기억이 남. -> 그럼 조합론 내용중 머지? 대충 파스칼 삼각형? 조합론때 배운 이론은 순열 조합 파스칼 삼각형 이정도인데 뭐지 .. 싶었음 조합론 챕터였던거..
2023.01.25 -
링크 : https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net TIL 2) 이 문제를 통해 얻어갈 것 구간합 (대푯값) -> 인덱스드 트리 or 세그먼트 트리 !! update() : 수의 빈번한 변경을 위한 업데이트. query() : 구간의 대푯값을 위한. 흔히 find()라고 일컫기도 인덱스드 트리 넘 어렵당 .. 흑흑 내 힘으로 할 수 있는게 없었다 흑흑 반복 마니 해야겠다 그러므로 정답코드는 올리지 않겠다 .. 거의 내것이 아니므로 .. 이 문..
[C++] 백준 BOJ - 개똥벌레 (3020)링크 : https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net TIL 2) 이 문제를 통해 얻어갈 것 구간합 (대푯값) -> 인덱스드 트리 or 세그먼트 트리 !! update() : 수의 빈번한 변경을 위한 업데이트. query() : 구간의 대푯값을 위한. 흔히 find()라고 일컫기도 인덱스드 트리 넘 어렵당 .. 흑흑 내 힘으로 할 수 있는게 없었다 흑흑 반복 마니 해야겠다 그러므로 정답코드는 올리지 않겠다 .. 거의 내것이 아니므로 .. 이 문..
2023.01.25 -
링크 : https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net TIL 1) 풀면서 놓쳤던 점 놓쳤던건 아니고 나는 역으로 생각했다 잘못생각함..ㅎ 잊을때쯤 다시한번 풀어보자용 아래서 위로 파악해야되는데, 위에서 아래로 파악하려했음 주어진 테스트케이스는 다 만족해서 잘 구현한줄알고 제출했는데 틀려서 왜인가했더니 !! 질문 게시판에 나랑 똑같이 생각한 사람이 있었당 ㅎㅎ 위에서 아래로 dp하다보면 충돌하는 케이스 생기는 .. 하나씩 써보면 알았을텐데.. 침착하고 꼼꼼..
[C++] 백준 BOJ - 내려가기 (2096)링크 : https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net TIL 1) 풀면서 놓쳤던 점 놓쳤던건 아니고 나는 역으로 생각했다 잘못생각함..ㅎ 잊을때쯤 다시한번 풀어보자용 아래서 위로 파악해야되는데, 위에서 아래로 파악하려했음 주어진 테스트케이스는 다 만족해서 잘 구현한줄알고 제출했는데 틀려서 왜인가했더니 !! 질문 게시판에 나랑 똑같이 생각한 사람이 있었당 ㅎㅎ 위에서 아래로 dp하다보면 충돌하는 케이스 생기는 .. 하나씩 써보면 알았을텐데.. 침착하고 꼼꼼..
2023.01.23 -
링크 : https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net TIL 1) 풀면서 놓쳤던 점 놓쳤던건 아니고.. ㅎㅎ 뭔가 완전탐색 dfs일거같은데 영 감이 안왔다. 완전 초반 접근은 2차원 배열을 생각했다가, 굳이 필요 없을거라는 생각에 치킨집을 벡터로 뺐다. 그렇게 두니 자연스레 가정집도 분리하여 벡터로 뺐다. dfs를 구현하고, 탈출조건 전까지 가정집 벡터를 돌며, 그 루프 안에서 폐업하지 않은 치킨집을 돌며 뭔가 치킨거리..
[C++] 백준 BOJ - 치킨 배달 (15686)링크 : https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net TIL 1) 풀면서 놓쳤던 점 놓쳤던건 아니고.. ㅎㅎ 뭔가 완전탐색 dfs일거같은데 영 감이 안왔다. 완전 초반 접근은 2차원 배열을 생각했다가, 굳이 필요 없을거라는 생각에 치킨집을 벡터로 뺐다. 그렇게 두니 자연스레 가정집도 분리하여 벡터로 뺐다. dfs를 구현하고, 탈출조건 전까지 가정집 벡터를 돌며, 그 루프 안에서 폐업하지 않은 치킨집을 돌며 뭔가 치킨거리..
2023.01.23 -
링크 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net TIL 1) 풀면서 놓쳤던 점 놓쳤던 점이라기보단, >모음은 최소 한개, 자음은 최소 두개< 라는 조건을 어떤식으로 구현할지에 대해 .. 나는 dfs 탈출조건에서 마지막에 확인하게 한거라 약간 비효율적이지 않나 싶었다. 모음은 다섯개고, 자음은 모음 이외니까 쉽게 처리할수있었지만, 만약 더 갯수가 여러개거나 복잡해진다면, 결코 내 방법은 효율적이라고 보기 어려울듯하다. 마지막 dfs까지 갈 필..
[C++] 백준 BOJ - 암호 만들기 (1759)링크 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net TIL 1) 풀면서 놓쳤던 점 놓쳤던 점이라기보단, >모음은 최소 한개, 자음은 최소 두개< 라는 조건을 어떤식으로 구현할지에 대해 .. 나는 dfs 탈출조건에서 마지막에 확인하게 한거라 약간 비효율적이지 않나 싶었다. 모음은 다섯개고, 자음은 모음 이외니까 쉽게 처리할수있었지만, 만약 더 갯수가 여러개거나 복잡해진다면, 결코 내 방법은 효율적이라고 보기 어려울듯하다. 마지막 dfs까지 갈 필..
2023.01.23 -
링크 : https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net TIL 1) 풀면서 놓쳤던점 하 .. 최종 구현할때 질게에 있는 반례 다 잘돌아가고 시간복잡도 넉넉한데 왜 틀렸을까하고 코드 첫부분부터 보다가 깨달았음ㅋ 전역 배열 선언할때 사이즈 서로 착각해서 잘못 선언해놨던것임 하하 하하하하 하하하 .. 사실 안웃겨 그리고 문제 조건에서 오래된거 없애는거 보고 처음 접근할땐 무작정 큐로 했는데 사실 내가 사용했던 자료구조로는 큐쓰면 해당 학생..
[C++] 백준 BOJ - 후보 추천하기 (1713)링크 : https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net TIL 1) 풀면서 놓쳤던점 하 .. 최종 구현할때 질게에 있는 반례 다 잘돌아가고 시간복잡도 넉넉한데 왜 틀렸을까하고 코드 첫부분부터 보다가 깨달았음ㅋ 전역 배열 선언할때 사이즈 서로 착각해서 잘못 선언해놨던것임 하하 하하하하 하하하 .. 사실 안웃겨 그리고 문제 조건에서 오래된거 없애는거 보고 처음 접근할땐 무작정 큐로 했는데 사실 내가 사용했던 자료구조로는 큐쓰면 해당 학생..
2023.01.23 -
링크 : https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 정답 코드 #include #include int N, M,num[10000+1]; int pNum[10000 + 1]; bool visit[10000 + 1]; void dfs(int cnt) { //cnt는 0~M-1까지. M개의 배열을 출력하기 위함 if (cnt == M) { for (int i = 0; i < M; i++) { printf("%d ", pNum[i]); } p..
[C++] 백준 BOJ - N과 M (10) (15664)링크 : https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 정답 코드 #include #include int N, M,num[10000+1]; int pNum[10000 + 1]; bool visit[10000 + 1]; void dfs(int cnt) { //cnt는 0~M-1까지. M개의 배열을 출력하기 위함 if (cnt == M) { for (int i = 0; i < M; i++) { printf("%d ", pNum[i]); } p..
2023.01.22 -
링크 : https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net TIL 1) 풀면서 놓쳤던점 cost 저장용 배열 visited를 long long으로 설정해줘야한다 ! 정점간 서로 같은 음수 가중치를 갖는, 서로에 대한 간선이 한개가 아닌 경우를 생각해보쟈 ? 하핫 사실 나두 잘 머름 정답코드 #include #include//INT_MAX long long visited[500 + 1];..
[C++] 백준 BOJ - 타임머신 (11657)링크 : https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net TIL 1) 풀면서 놓쳤던점 cost 저장용 배열 visited를 long long으로 설정해줘야한다 ! 정점간 서로 같은 음수 가중치를 갖는, 서로에 대한 간선이 한개가 아닌 경우를 생각해보쟈 ? 하핫 사실 나두 잘 머름 정답코드 #include #include//INT_MAX long long visited[500 + 1];..
2023.01.18