![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b3YUz0/btqKwrmp8Ir/0BUvvPT9qKKIJQ8ZeaXB5k/img.png)
소수 Prime Number' 처음 소수를 판별하여 출력하라! 라고 한다면 소수의 정의를 따라간다. 소수는 1과 자기 자신을 약수로 갖는 값으로 1과 자기 자신외의 약수를 가지지 않는 1보다 큰 수라고 하는데 한번 꼬아놓은 말이라 개인적으로 싫어한다. 그냥 1보다 크고, 약수로 1과 자기 자신을 갖는 값이라고 직설적인 말을 쓰면 좋지 않을까? 하여튼 소수를 구하기 위해서는 자기 자신보다 작은 값들로 나누어서 나누어지면 안된다. = 나누어진다는 것은 배수라는 의미이기 때문이다. int number = 4; bool isPrime = true; for(int i=number-1; i>1; i++){ if(number%i==0){ isPrime = false; break; } } 내가 가진 수를 for문으로 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/csHKZB/btqHvCdX1nx/OsYesdmeMpwHO6k1PN4MJK/img.png)
문제 발단 대학교에 다니면서 제일 중요한 것이 무엇일까? 바로 공지 사항이다. 대학교 공지사항은 여러가지 이유로 나에게 도움이 되는 정보들이 많이 올라온다. 그렇기 때문에 대학생이라함은 공지사항을 챙겨봐야한다. 나는 하루에 2-3번 정도 공지사항을 보기 위해서 자주 들어간다. 조금 많이 본다. 대학 공지사항을 한 페이지만 보면 그나마 괜찮지만, 페이지가 다른 공지사항을(대학, 과 공지 등) 볼 때 매우 귀찮은 일이다. 코딩을 배우는 이유는 귀찮은 일을 줄이기 위해서다. 그러므로 내가 보는 공지를 알림으로 띄우기로 마음먹었다. 데이터 얻어 오는 수단 1: 크롤링 학교에서 API 제공해준다면 그 정보만을 이용해서 개발하면 그만이다. 사실 그러면 좋은데 문의를 올렸는데도 답장이 없고, 아는 형도 학교 페이지를..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHuqk0/btqG9R1vfBQ/XXzgdm8FLOBpN6S0dBkjE1/img.png)
책은 너무 비싸다. 헌책으로 공부하기는 싫다. 다행히도 책 스트리밍 덕분에 많은 책을 구매해서 안 봐도 되지만.. 대학 교재나 스트리밍이 안되는 책은 사서 봐야한다. 알라딘을 예전부터 오랜 시간동안 사용했고 개인적으로 알라딘이 할인이 많다고 느껴져서 항상 사용한다. 이제 곧 N페이 체크카드도 보내줄 시간이 다가오기도 하니 다시 업데이트 해보려고 한다. 알라딘은 매일 이벤트를 하고 있다. 달마다 선물도 달라지며 항상 이벤트가 있다. 항상 있다. 그러니 매번 구매할 때 받을 거리가 있다는 말인 것이다. 먼저 맨 상단바에 존재하는 이벤트에 들어가자. 항상 바뀌는 페이지이지만 적립금 꼭 챙기세요와 같이 적립금을 주는 이벤트가 매번 있다. 항상 여기를 주의깊게 봐야한다. V체크한 것은 매번 받을 수 있는 적립금 ..
자료구조를 배우다보면 배우는 하노이의 탑 여전히 그때나 지금이나 직접 생각해서 짜려면 생각보다 곤란하다. 하노이의 탑은 재귀를 사용했지만 재귀를 사용할줄 아는 사람이 직접 구현하는 것보다 이미 구현되어있는 구현 순서를 쉽게 생각해내는 것이 더 빠르고 정확하다. 내가 원숭이라는 증명인걸까? 하노이의 탑은 A, B, C 의 봉 3개에서 A에서 C로 모든 원반을 옮기는 것을 목표로 한다. 각 규칙은 아래와 같다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이미 이 글까지 보러왔다면 다 알고 있는 내용이라고 생각한다.(문제에 적혀있으니까..) 하노이의 탑을 어떻게 구현하느냐 아니다. 어떻게 진행되는지 생각해보자. 원반이 총 3개인 경우로..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dz01j6/btqFUAuJvYS/erahiIZ7BS6umuxhvnRkh1/img.png)
#include using namespace std; int T; bool check; int func(long long x, y, int k){ if(x == y-1){ return 1; } else if( x > y-1){ return 0; } int count = func(x+k+1, y, k+1); count += func(x+k, y, k ); return count; } int main(){ ios::sync_with_stdio(0); cin.tie(0); long long x,y; cin >> T; while(T--){ cin >> x >> y; check = false; if( y-x == 1) cout
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/qjagl/btqFS0MdvhN/T0tasTX0qr8XrQrUoKv0m1/img.png)
이 문제는 단순하게 숫자를 입력받으면 위에 있는 거꾸로 된 삼각형을 출력하는 문제이다. 재귀 문제이며 규칙을 찾아야한다. 처음에는 이런 패턴인줄 알았다. 그래서 각 점의 좌표를 구하려고했다. 물론 틀렸고 이렇게 반복되는 것이고 주황 표시된 좌표를 구해야했다. 이제 문제 출력을 2차원 배열에 채워 나가자. 일단 내 뇌가 인식하기 위해서는 그림을 그려야한다. 인덱스 번호까지 적어주자. 일단 1이 입력값으로 주어지는 경우 0,0/0,1/1,1을 칠해야한다. 재귀 호출을 적어주자. 행은 x 열은 y로 적어주자. func(x, y) 먼저 각 케이스대로 적어주면 func(x, y) func(x, y+1) func(x+1, y) 가 된다. 이게 근본이되는 호출이다. 그리고 우리가 기저 사례 base case를 만들어..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b9F3rJ/btqD2GXwzzF/VmgkkYWzrz6LJmFPrBJDAK/img.png)
스택 자료구조는 참 특이하다. 처음에 들어온 값이 마지막에 나가고 마지막에 들어온 값은 처음에 나간다. 마치 순환보다는 이해가 잘 가지만 막상 생각하려고하면 한번에 생각할 수 없다. 위 문제 또한 스택을 활용하는 문제다. 처음부터 } { 값을 어떻게 바꾸지? } -> { 순으로 생각해서 로직이 생각이 나지 않았다. 괄호라는 점, 안정적인 문자열은 짝수라는 점을 계속 곰곰히 생각해보았다. {} {{}}, {}{} {{{}}}, {{}{}}, {}{}{} 이런 식으로 있을 것이다. 반대로 고쳐야하는 불안정 문자열은? {{{{, }}}}, {{{}, {}}}}, {}{{, }}{{ 다양하게 많다. 고친 숫자를 한번 봐보자 {{{{ 경우 {{}}로 바꾼다면 2, {}{}로 바꾼다면 2다. }}}} 도 2, 2다..