전체 글
[C++/백준] 1931 회의실 배정
문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거..
[C++/백준] 백준 7576 토마토
문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는 격자모양의 상자들..
[C++/ 백준] 2606 바이러스
백준 2606 바이러스 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 ..
[c++/백준] 1697 숨바꼭질
백준 1697 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. BFS를 사용해서 푸는 문제이다. 수빈이가 택..
yarn init 에러 해결
yarn init (버전명) error An unexpected error occurred: "Can't answer a question unless a user TTY". 이런 에러가 나오면 git bash등이 아닌 cmd를 사용하면 해결된다.
연속합 _백준 1912
백준 1912 연속합 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 연속된 수 중, 가장 큰 합을 구하는 문제이다. 크게 어려운 문제는 아니라서, 꽤 빨리 풀기도 한 문제이다. d[i] 를 구할 때, d[i-1] + a[i](수열의 i번째 수) 와 a[i]를 비교하여 더 큰 값을 d[i]로 하고, 배열 d의 최댓값을 출력하면 되는 문제이다. #include using namespace std; int d[100001]; int nums[100001]; int main(void) { int num; scanf("%d", &num); for (int i = 0; i < n..
가장 긴 증가하는 부분 수열 4_ 백준 14002
백준 14002 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 앞에서 작성했던 가장 긴 증가하는 부분 수열의 심화버전의 문제이다. (이전문제는 아래 링크로 들어가면 된다) 2020/07/22 - [백준 문제풀이] - 가장 긴 증가하는 부분 수열_ 백준11053 위 문제에서 조금 더 어려워 진 점은, 가장 긴 증가하는 부분 수열을 출력해야하는 점이다. 즉, 수열의 순서를 저장할 필요가 있는 것인데, 나는 11053 문제의 코드에 더 덧붙이는 방식으로 풀었으므로 (두 문제의 연관성이 크므로, 이 순서로 푸는 것을 추천한다) 11053 문제에서 생각했던 점화식의 흐름에 초점을 맞추어 진행했다. 각각의 부분수열을 저장할 수는 없으므로, d[i]를 구하면서, 하나의 배열을 ..
가장 긴 증가하는 부분 수열_ 백준11053
백준 11053 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오 수열의 길이와 수열의 값을 입력받아 가장 긴 증가하는 부분수열을 구하는 문제이다. 이 문제 역시 DP 문제 이므로, d[i]를 구하는 것이 중요한데, d[1] = 1 d[i]와 d[i-1] ~ d[1]의 관계 ← 이 부분에서 주의해서 살펴보았다. '가장 긴 증가하는 부분수열' 이 되기 위해서는 앞에 있는 수 중 i번째 숫자보다 작으며, d의 값이 가장 큰 것을 찾아야 한다. 그 이후에는, 그 값(d[j])에 1을 더하면, 우리가 구해야 하는 d[i]값이 나온다. 해당 내용에 맞추어 코드를 짜면 아래와 같다. #include using namespace std; int nums[1001]; int d[100..
백준 문제풀이 + 코테준비의 방향
요즘 다른 활동을 하느라 블로그 포스팅이 굉장히 뜸했는데.. 알고리즘 문제도 풀고, 나 자신에 대한 약속도 하기 위해서 간단하게 적어도 주에 5번정도는 포스팅을 해보려고 한다. 내가 세운 흐름은 오전에 알고리즘 문제를 1~2문제 푼다. 다른 코드를 확인해보고, 어떻게 해야 더 효과적으로 짤 수 있는지 고민해본다 포스팅한다 일단 오늘은 계획과, 문제 방향을 정하고 내일부터 문제를 풀어나가고자 한다! DFS/ BFS → 그리디 알고리즘 → 완전탐색 순으로 하지 않을까 한다. 일단 너무 급해하지도, 너무 빡빡하지 않게 하면서 습관을 다시 잡는게 중요할 것 같다. 참고한 블로그는 https://baactree.tistory.com/14 https://plzrun.tistory.com/entry/%EC%95%8C..
프로젝트 진행중.. + XD 구현
디자인을 짜고, 내용들을 구상하고 있다.. 아직은 개발로 들어가진 않았지만, node js와 react, react native역시 생활코딩이나, nomad coders, inflearn등을 통해서 공부하고 있는 중인데, 새로운 것들을 배우는건 항상 생각하는 거지만 힘들기도 하면서.. 재미있기도 한 것 같다 지금은 어도비 xd를 활용해서 전체적인 기능과 디자인을 먼저 구상하고 있는데, '동아리 박람회'와 비슷한 느낌을 내기 위한 기능들에 초점을 맞추어 먼저 진행하게 될 것 같다. xd를 쓰면서 기능을 좀더 시각적으로 확인하고 진행하니까 좀더 좋은 것 같다. 나중에 개발하더라도, 시간이 넉넉하면 충분히 사용할만한 도구인듯.. 나는 아마 서버쪽 (node js)를 중점적으로 맡게 될 것 같지만, react나..