온라인저지 144

[BOJ] 1002번 : 터렛

링크 : https://www.acmicpc.net/problem/1002 터렛문제... 방금전에 올린 '두 원의 위치관계'를 올린 이유가 여기 있다.굉장히! 유익한 문제~ 중학교 과정에서 약했던 부분을 다시 보강한 기분이다. 암튼 여기서 해설을 원한다면 전에 있는 글을 보길 바란다. 그 다음에 다시 오길 바란다.아, 참고로 이 문제에서 고민해야하는 부분은 -1을 출력하는 부분인데, 그냥 x1 == x2 && y1 == y2 && r1 == r2 일 때 -1을 출력하면 된다. (잘 생각해 보면 될 것이다.) 그리고 나머지 부분은 내 전 글에 있으므로 그냥 여기에는 코드만 올리겠다.12345678910111213141516171819202122232425262728293031#include #include..

온라인저지 2017.11.16

[BOJ] 1260번: DFS와 BFS

문제 풀러 가기 링크! 1260번: DFS와 BFSDFS와 BFS를 실제로 구현해 볼 수 있는 아주 좋은 문제이다.DFS는 깊이 우선 탐색이여서 최대한 한 정점에서 최대한 깊게 갔다가 다시 돌아오는 작업을 반복해서 모든 정점을 탐색하는 것이고BFS는 너비 우선 탐색이여서 층 별로 있는 모든 정점을 다 돌면서 내려간다고 보면 된다.아직 내가 직접 쓴 글이 없어서 개인적으로 정말 좋다고 생각하는 블로그의 글의 링크를 걸어 놓을테니 이 쪽에 가서 자세히 공부하면 된다.DFS 설명, BFS 설명 개인적으로 DFS는 재귀함수를 이용하는 것을 좋아해서 원래는 스택을 쓰지만 나는 재귀함수로 구현했고 BFS는 스택을 이용해서 구현했다. BFS는 분리하지 않고 main함수에 적어서 가독성이 떨어질텐데... 그 점은 양해..

온라인저지 2017.11.04

[BOJ] 10942번: 팰린드롬?

https://www.acmicpc.net/problem/10942 오랜만입니다... 오늘은 팰린드롬에 대한 문제를 풀어 보려고 합니다.팰린드롬이란, 위키백과 : 숫자, 단어, 구 같은 시퀀스들이 앞과 뒤가 같아서 반으로 접으면 일치하게 되는 녀석들을 칭합니다. 이 문제는 DP로 푼다고 하는데, 저는 사실 DP를 잘 못하기도 하고 굳이 DP로 풀 필요가 없는 것 같았습니다.12345678910111213141516171819202122232425262728293031#include int palin(int start, int finish, int *arr) { int mid = (start + finish) / 2; for(int i = start, j = finish; i = mid; i++, j--)..

온라인저지 2017.10.21

[BOJ]14726번: 신용카드 판별

14726: 신용카드 판별 숫자로 해도 되고 문자열로 해도 되는데 나는 문자열로 구성했다. 구현~ 12345678910111213141516171819202122232425262728293031323334353637383940#include int N;char num[10001][1001]; bool f(char a[]){ int sum = 0; for (int i = 15; i >= 0; i--) { if ((i + 1) % 2 != 0) { if ((a[i] - '0') * 2 >= 10) { a[i] = ((((a[i] - '0') * 2) / 10) + ((a[i] - '0') * 2) % 10) + '0'; } else a[i] = (a[i] - '0') * 2 + '0'; } } for (in..

온라인저지 2017.09.24

[BOJ]2605번: 줄 세우기

2605: 줄 세우기 풀이이 문제는 여러가지 방법으로 풀 수 있다는 생각을 했다.스택으로도 풀 수 있고, swap으로도 풀 수 있다는 생각을 했지만 나는 swap으로 했다. 별로 추천하고 싶은 방법은 아니지만 도저히 이 방법 밖에는 생각이 나지 않았기 때문에 이 방식으로 문제를 해결했다. 1) 우선 나는 1부터 n까지의 숫자를 배열에 다 채웠다.2) 반복문을 i = 0 ~ i < n 만큼 도는데, 변수 idx의 값은 i에 따라 바뀐다.(순서대로 돌기 때문에)3) 뽑은 번호를 x라고 할 때 x == 0이면 아무런 행동도 취하지 않으므로 continue를 해주고 나머지 경우에는 x번 만큼 반복문을 돌면서 swap을 해주면 된다. 4) 마지막 출력!!! 아직도 잘 모르겠다고요? 네 충분히 이해합니다. 저도 다..

온라인저지 2017.09.03

[BOJ]2309번: 일곱 난쟁이

2309: 일곱 난쟁이 풀이무식하게 brute force를 해보자. 제한된 상황에서는 이런 좋은!! 알고리즘이 어디 있겠는가. 처음에 어떻게 풀어야 할 지 모르겠어서 헤맸다. 나는 어떻게 풀었냐면 일단 9명의 키를 다 더한다.그리고 키 순서 대로 정렬을 시켰다. 반복문을 돌면서 sum - (i번째 값 + j번째 값) == 100이 되면 i와 j의 인덱스를 저장해서 출력을 할 때 그 인덱스는 거르고 출력 할 수 있게 했다. 코드123456789101112131415161718192021222324252627282930#include #include using namespace std; int arr[9], i, j, sum =0, save_index1, save_index2; int main(){ for ..

온라인저지 2017.09.03

[BOJ] 2477번: 참외밭

링크 : https://www.acmicpc.net/problem/2477 2010년 초등부 3번 문제다. (4,5번은 나중에 풀어봐야겠다) 이 문제는 입력 값이 어떻게 주어지든 간에 이.어.져.서 주어진다는 것을 이용하면 된다.직사각형 넓이 최대값 구하는 것은 쉽고 (가로, 세로 MAX 값 구해서 곱해주면 된다. 이것 또한 가로, 세로는 연결되어 있으니깐 잘 이용하면 된다!),작은 직사각형을 구해서 빼줘야 한다. 근데 여기서 알아야 할 것이 참외밭은 무조건 육각형이라는 것이다.그렇기 때문에 가로, 세로의 최대값이 나온 지점에서 가로의 index를 i라고 하면 i를 +3, +4 해준 값을 곱하면 작은 직사각형이라는 것이다!"잘 모르겠으면 그림을 보면서 비교를 해보자."그렇게 해서 최대 직사각형 넓이를 구..

온라인저지 2017.08.26

[BOJ]2476번: 주사위 게임

링크 : https://www.acmicpc.net/problem/2476 2010년 초등부 2번 문제다. 이 문제는 MAX 함수랑 비교 연산만 해주면 된다.쉬우니깐 코드로 바로 가시죠.123456789101112131415161718192021222324252627282930#include #include using namespace std; int maxiiii(int a, int b) { return a > b ? a : b; }int main(){ int n, a[1002][3], result[1002],MAX = 0; cin >> n; for (int i = 0; i > a[i][0] >> a[i][1] >> a[i][2]; if (a[i][0] == a[i][1] && a[i][1] == a[..

온라인저지 2017.08.26