Algorithm/문제풀이(29)
-
[백준] 2583 | 영역 구하기 | C++
풀이 전에, 선을 기준으로 한 좌표체계를 공간으로 바꾸는 방법은 의외로 간단하다. 오른쪽 위 꼭지점 좌표를 end포인터처럼 생각하면 된다. (소스코드의 input함수 참고) 그러면 아래 그림의 좌표체계를 선이 아닌, 공간처럼 인식할 수 있다. 1. DFS 풀이 DFS 풀이의 핵심은 이렇다. int 영역넓이(전역변수); 풀이함수(solution)에서 좌표마다 반복: 만약 빈 좌표라면: DFS를 돌린다(빈 좌표갯수 count, 인접한 빈 좌표들을 채운다); 반환값1(영역갯수)++; 영역넓이를 반환값2에 저장한다; 영역넓이를 0으로 초기화한다; void DFS(좌표): 현재 좌표를 채운다; 영역넓이++; 4방향반복: 만약 togo좌표가 비어있다면: DFS(togo좌표) 재귀진입; 각 영역마다의 넓이를 전역변수..
2022.07.15 -
[백준] 10799 | 쇠막대기 | C++
풀이의 핵심은 이렇다. 입력으로 주어진 문자열을 하나씩 순서대로 처리한다: 만약 ( 이라면: 막대기의 시작을 알리는 것이다. stack에 넣는다; 만약 ) 이라면: stack pop; stack의 top(가장 최근에 넣은 값)이 ( 이라면: 레이저로 인해 조각들이 생겼다. 생겨난 조각 수(stack의 size)만큼 결과값에 더한다; stack의 top(가장 최근에 넣은 값)이 ) 이라면: 조각의 끝을 알리는 것이다. 결과값에 하나를 더한다; 위의 그림과 함께 보면 의사코드의 이해에 도움이 될 것이다. 주의할 점은, ) 을 처리하려는데 이전에 ( 이 들어왔다면, 막대기가 아닌 레이저이므로 미리 stack에서 pop시켜야 한다. 그래야 조각 수를 올바르게 더할 수 있다. ) 을 처리하려는데 이전에도 ) 이 ..
2022.07.15 -
[백준] 2812 | 크게 만들기 | C++
내가 생각한 풀이의 핵심은 이렇다. 입력으로 주어진 숫자를 하나씩 순서대로 처리한다: 만약 i번째 수 > stack의 top이라면: stack pop; k 하나 감소; i번째 수를 stack에 넣는다; 이후 k가 남아있을 수 있으니, k가 0이 될 때까지 stack을 pop시켜야 한다. (나중에 다른 사람의 풀이를 통해 알게 되었다.) 그리고 stack에 담긴 수를 역순으로 꺼내서 답을 조합하였다. 그런데 stack으로 풀면 시간 초과가 났다. 그래서 vector로 대신하여 풀었더니 맞았습니다!!가 나왔다. (왜 이런지는 잘 모르겠다.) 정답 소스코드 - vector를 이용한 풀이 #include #include using namespace std; int main() { ios::sync_with_st..
2022.07.15 -
백준 문제풀이
https://github.com/yunbinni/BAEKJOON 제 깃허브 리포지토리에 백준의 풀이소스들을 올려두었습니다. 거의 모든 문제의 언어가 Python으로 작성하였습니다. 잘못된 내용이 있으면, 여기에 댓글로 남겨주시기 바랍니다. 가능한 빠른 시간에 수정하도록 하겠습니다. 백준 바로가기 -> https://www.acmicpc.net/
2021.07.07 -
CodeUp 언어별 문제풀이 (C, C++, Java, Python)
github.com/yunbinni/CodeUp yunbinni/CodeUp Contribute to yunbinni/CodeUp development by creating an account on GitHub. github.com 제 깃허브 리포지토리에 C, C++, Java, Python별 풀이소스들을 올려두었습니다. 잘못된 내용이 있으면, 여기에 댓글로 남겨주시기 바랍니다. 가능한 빠른 시간에 수정하도록 하겠습니다. 현재 해결한 문제번호들 보기 -> https://codeup.kr/userinfo.php?user=yunbinni 코드업 바로가기 -> codeup.kr
2021.02.24