* BOJ 백준온라인져지 2169 로봇 조종하기 풀이
* BOJ 백준온라인져지 10821 정수의 개수 풀이
* BOJ 백준온라인져지 2884 알람 시계 풀이
* BOJ 백준온라인져지 5597 과제 안 내신 분..? 풀이
* BOJ 백준온라인져지 1780 종이의 개수 풀이
* BOJ 백준온라인져지 2011 암호코드 풀이
* BOJ 백준온라인져지 14503 로봇 청소기 풀이
* BOJ 백준온라인져지 1547 공 풀이
* BOJ 백준온라인져지 1107 리모컨 설치 풀이
* BOJ 백준온라인져지 2110 공유기 설치 풀이
* BOJ 백준온라인져지 9507 Generations of Tribbles 풀이

https://github.com/KSH-code/TIL/tree/master/algorithm/BOJ

주말에 운전해서 국민대학교를 방문했다.

빙글빙글 돌아서 도착했는데 이미 시상식은 끝났다.

상이랑 주차권을 받고 집으로 돌아갔다. (장려상)


'IT > 알고리즘' 카테고리의 다른 글

2018-08-27 ~ 2018-09-02  (0) 2018.09.04
2018-08-20 ~ 2018-08-26  (0) 2018.08.27
2018-08-06 ~ 2018-08-12  (0) 2018.08.13
2018-07-30 ~ 2018-08-05  (0) 2018.08.13
2018-07-23 ~ 2018-07-29  (0) 2018.08.13
* BOJ 백준온라인져지 1629 곱셈 풀이
* BOJ 백준온라인져지 1357 뒤집힌 덧셈 풀이
* BOJ 백준온라인져지 2875 대회 or 인턴 풀이
* BOJ 백준온라인져지 11066 파일 합치기 풀이
* BOJ 백준온라인져지 15967 에바쿰 풀이
* BOJ 백준온라인져지 11656 접미사 배열 풀이
* BOJ 백준온라인져지 11004 K번째 수 풀이
* BOJ 백준온라인져지 1924 2007년 풀이
* BOJ 백준온라인져지 15966 군계일학 풀이
* BOJ 백준온라인져지 15964 이상한 기호 풀이
* BOJ 백준온라인져지 15963 CASIO 풀이
* BOJ 백준온라인져지 15965 K번째 소수 풀이

https://github.com/KSH-code/TIL/tree/master/algorithm/BOJ

국민대학교 알고리즘 경진대회 본선에 참가했다.

1, 2 번을 만점 맞았지만 3 번에서 부분점수를 받았다.

1, 2 번은 쉽게 풀 수 있는 Greedy 문제들 이였던걸로 기억이 난다.

경희대학교는 아쉽게 입상하지 못했지만, 국민대학교는 장려상을 조금 넉넉하게 준다고 하니 장려상은 받을 수 있을거라 생각한다.


'IT > 알고리즘' 카테고리의 다른 글

2018-08-20 ~ 2018-08-26  (0) 2018.08.27
2018-08-13 ~ 2018-08-19  (0) 2018.08.20
2018-07-30 ~ 2018-08-05  (0) 2018.08.13
2018-07-23 ~ 2018-07-29  (0) 2018.08.13
~ 2018-07-22 풀이 목록  (0) 2018.08.13
* BOJ 백준온라인져지 1024 수열의 합 풀이
* BOJ 백준온라인져지 1904 01타일 풀이
* BOJ 백준온라인져지 11404 플로이드 풀이
* BOJ 백준온라인져지 10942 팰린드롬? 풀이
* BOJ 백준온라인져지 1652 누울 자리를 찾아라 풀이
* BOJ 백준온라인져지 11054 가장 긴 바이토닉 부분 수열 풀이
* BOJ 백준온라인져지 1212 8진수 2진수 풀이
* BOJ 백준온라인져지 2869 달팽이는 올라가고 싶다 풀이

https://github.com/KSH-code/TIL

경희대학교 알고리즘 경진대회 본선을 참가했습니다.

늦게 입실했지만 다행히 대회 시작전에 모든 준비가 끝났습니다.

하지만 서버가 터져서 약 5 분 정도 늦게 풀이를 시작했지만 대회 시작을 늦게한 사람들에게는 어드밴티지(시간)을 주었습니다.

1, 2, 3 번 문제를 보고 1, 3 번은 모든 테스트케이스를 맞았지만 2 번은 부분 점수를 맞았습니다.

아쉬운게 대회가 끝날때 쯤 풀이가 생각나서 올솔브를 하지 못했습니다. 그리고 한 가지의 풀이를 고집해 시간을 많이 소비했네요.

국민대학교 알고리즘 경진대회 본선에서는 실수없이 그리고 차분하게 풀면 좋은 결과가 나올거라 믿습니다.


'IT > 알고리즘' 카테고리의 다른 글

2018-08-13 ~ 2018-08-19  (0) 2018.08.20
2018-08-06 ~ 2018-08-12  (0) 2018.08.13
2018-07-23 ~ 2018-07-29  (0) 2018.08.13
~ 2018-07-22 풀이 목록  (0) 2018.08.13
BOJ 백준온라인져지 1915 가장 큰 정사각형 풀이  (0) 2018.07.04
* 경희대학교 알고리즘 대회 예선 참가 (235 / 300)
* BOJ 백준온라인져지 11655 ROT13 풀이
* BOJ 백준온라인져지 10971 외판원 순회 2 풀이
* BOJ 백준온라인져지 2506 점수계산 풀이
* BOJ 백준온라인져지 1074 Z 풀이
* BOJ 백준온라인져지 1922 네트워크 연결 풀이
* BOJ 백준온라인져지 1373 2진수 8진수 풀이

https://github.com/KSH-code/TIL/tree/master/algorithm/BOJ

경희대학교 알고리즘 경진대회 참가

고등학교 졸업생 또는 재학생을 대상으로 치뤄지는 대회였습니다.

문제는 총 3 문제이고 효율, 정답을 맞추는 테스트 케이스들로 구성돼있습니다.

저는 2 문제를 100 점을 맞았고 1 문제에서는 정답을 맞추는 케이스와 효율성 1 케이스를 맞춰서 총 235 점을 받았습니다.

본선 진출을 할 수 있을거라 생각되네요.


* BOJ 백준온라인져지 10162 전자레인지 풀이
* BOJ 백준온라인져지 11659 구간 합 구하기 4 풀이
* BOJ 백준온라인져지 10988 팰린드롬인지 확인하기 풀이
* BOJ 백준온라인져지 2460 지능형 기차 2 풀이
* BOJ 백준온라인져지 1057 토너먼트 풀이
* BOJ 백준온라인져지 15894 수학은 체육과목 입니다 풀이
* BOJ 백준온라인져지 2744 대소문자 바꾸기 풀이
* BOJ 백준온라인져지 2420 사파리월드 풀이
* BOJ 백준온라인져지 1759 암호 만들기 풀이
* BOJ 백준온라인져지 7562 나이트의 이동 풀이
* BOJ 백준온라인져지 10974 모든 순열 풀이
* BOJ 백준온라인져지 2231 분해합 풀이
* BOJ 백준온라인져지 4101 크냐? 풀이
* BOJ 백준온라인져지 1764 듣보잡 풀이


https://github.com/KSH-code/TIL/tree/master/algorithm/BOJ

문제 설명

1 로 색칠 된 크기가 가장 큰 정사각형의 크기를 구하면 된다.
1 칸은 1 이다.

풀이

정사각형의 조건 가로, 세로의 길이가 같다.

dp 를 이용해서 풀이하기 위해 맨 위부터 오른쪽으로 가면서 차례대로 밑으로 내려갔다.
현재의 위치에서 왼쪽의 길이와 세로의 길이가 같다면 최소한 맨 왼쪽 위를 제외하고 정사각형이 된다는 조건이다.
그러면 맨 왼쪽 위는 어떻게 검사하냐?
왼쪽 위의 대각선을 보면 된다.

결론적으로는 왼쪽, 위, 대각선 왼쪽 위 중 가장 작은 값 + 1를 해주면 된다.
그리고 넓이를 구하는 문제이니 제곱으로 출력해주면 된다. (정사각형 넓이)

코드

문제

n×m의 0, 1로 된 배열이 있다. 이 배열에서 1로 된 가장 큰 정사각형의 크기를 구하는 프로그램을 작성하시오.

0100
0111
1110
0010

위와 같은 예제에서는 가운데의 2×2 배열이 가장 큰 정사각형이다. 

입력

첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다.

출력

첫째 줄에 가장 큰 정사각형의 넓이를 출력한다.

예제 입력 1 

4 4
0100
0111
1110
0010

예제 출력 1 

4


문제 설명

bfs 의 기본 문제이다.

S 층에서 G 층으로 갈 수 있나 확인하고 갈 수 있다면
최소 이동 횟수를 출력하면 된다.

풀이

S 에서 U, D 를 큐를 사용해 위 아래를 방문한다.
1. S + U 에서는 S + 2U, S + U - D 를 방문하고
2. D 도 S 와 똑같은 방식으로 작동 한다.

저 1, 2 를 돌아가면서 반복시키면 갈 수 있는 층은 모두 방문하게 된다.
1, 2 를 반복하다 G 층에 도달하게 되면 즉시 이동 횟수를 출력하고 종료한다. (FIFO 여서 무조건 그게 답이다.)
1, 2 를 반복해도 가지 못한다면 "use the stairs" 를 출력한다.

일반 큐를 사용해도 풀리지만, 우선순위 큐를 사용해 메모리 사용량이나 시간을 더 감소시킨다.

왜 시간이 감소되는지는 잘 모르겠다.

코드

문제

강호는 코딩 교육을 하는 스타트업 스타트링크에 지원했다. 오늘은 강호의 면접날이다. 하지만, 늦잠을 잔 강호는 스타트링크가 있는 건물에 늦게 도착하고 말았다.

스타트링크는 총 F층으로 이루어진 고층 건물에 사무실이 있고, 스타트링크가 있는 곳의 위치는 G층이다. 강호가 지금 있는 곳은 S층이고, 이제 엘리베이터를 타고 G층으로 이동하려고 한다.

보통 엘리베이터에는 어떤 층으로 이동할 수 있는 버튼이 있지만, 강호가 탄 엘리베이터는 버튼이 2개밖에 없다. U버튼은 위로 U층을 가는 버튼, D버튼은 아래로 D층을 가는 버튼이다. (만약, U층 위, 또는 D층 아래에 해당하는 층이 없을 때는, 엘리베이터는 움직이지 않는다)

강호가 G층에 도착하려면, 버튼을 적어도 몇 번 눌러야 하는지 구하는 프로그램을 작성하시오. 만약, 엘리베이터를 이용해서 G층에 갈 수 없다면, "use the stairs"를 출력한다.

입력

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

출력

첫째 줄에 강호가 S층에서 G층으로 가기 위해 눌러야 하는 버튼의 수의 최소값을 출력한다. 만약, 엘리베이터로 이동할 수 없을 때는 "use the stairs"를 출력한다.

예제 입력 1 

10 1 10 2 1

예제 출력 1 

6

예제 입력 2 

100 2 1 1 0

예제 출력 2 

use the stairs


문제 설명

학생들에게 사과를 나눠준다.
사과의 개수는 모두 동일하게 나눠준다.

모두 나눠준 나머지를 최소로 한 값들을 구하시오

풀이

모두 동일하게 나눠주고 남은 최솟값을 구하는것은
사과 / 학생 의 나머지와 같다.

왜냐하면 모든 학생에게 동일한 사과의 개수를 나눠줘야 되기 때문이다.

코드

문제

경상북도 특산품인 사과를 학생들에게 나눠주기 위해 여러 학교에 사과를 배정하였다. 배정된 사과 개수는 학교마다 다를 수 있고, 학생 수도 학교마다 다를 수 있다. 각 학교에서는 배정된 사과를 모든 학생들에게 똑같이 나눠주되, 남는 사과의 개수를 최소로 하려고 한다. (서로 다른 학교에 속한 학생이 받는 사과 개수는 다를 수 있다.)

예를 들어, 5개 학교의 학생 수와 배정된 사과 수가 다음과 같다고 하자.

학교ABCDE
학생 수24135237
사과 개수5222531070

A 학교에서는 모든 학생에게 사과를 두 개씩 나눠주고 4개의 사과가 남게 된다. B 학교에서는 모든 학생에게 사과를 한 개씩 나눠주고 9개의 사과가 남게 된다. 비슷하게 C 학교에서는 3개의 사과가, D 학교에서는 10개의 사과가, E 학교에서는 0개의 사과가 남게 되어, 남는 사과의 총 수는 4+9+3+10+0 = 26이다. 

각 학교의 학생 수와 사과 개수가 주어졌을 때, 학생들에게 나눠주고 남는 사과의 총 개수를 구하는 프로그램을 작성하시오.

입력

첫 번째 줄에는 학교의 수를 나타내는 정수 N (1 ≤ N ≤ 100)이 주어진다. 다음 N 개의 줄에 각 학교의 학생 수와 배정된 사과 개수를 나타내는 두 개의 정수가 주어진다. 학생 수와 사과 개수는 모두 1이상 100이하이다. 

출력

남은 사과의 총 개수를 나타내는 정수를 출력한다.

예제 입력 1 

5
24 52
13 22
5 53
23 10
7 70

예제 출력 1 

26

예제 입력 2 

3
10 20
5 5
1 13

예제 출력 2 

0


괜히 길어서 어려워 보이지만 그냥 최댓값과 위치를 출력하면 되는 문제이다.

문제

<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

예를 들어, 다음과 같이 81개의 수가 주어지면

이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 자연수가 주어진다. 주어지는 자연수는 100보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

예제 입력 1 

3 23 85 34 17 74 25 52 65
10 7 39 42 88 52 14 72 63
87 42 18 78 53 45 18 84 53
34 28 64 85 12 16 75 36 55
21 77 45 35 28 75 90 76 1
25 87 65 15 28 11 37 28 74
65 27 75 41 7 89 78 64 39
47 47 70 45 23 65 3 41 44
87 13 82 38 31 12 29 29 80

예제 출력 1 

90
5 7


문제 설명

나눠진 영역의 최대 개수를 구하면 된다.
높이는 1 ~ x 까지 다 해보거나 나름대로의 규칙을 찾으면 됨

풀이

나는 다 해보기로 생각했다.
dfs 를 이용해 인접한곳을 다 지워나갔고 dfs 를 실행할 수 있다면 카운트 업 해줬다.
숫자는 다 해볼 필요가 없으므로 1 ~ 나온 숫자중 가장 큰 숫자
까지 했다.

코드

문제

재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이 때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다.

어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열의 각 원소는 해당 지점의 높이를 표시하는 자연수이다. 예를 들어, 다음은 N=5인 지역의 높이 정보이다.

이제 위와 같은 지역에 많은 비가 내려서 높이가 4 이하인 모든 지점이 물에 잠겼다고 하자. 이 경우에 물에 잠기는 지점을 회색으로 표시하면 다음과 같다. 

물에 잠기지 않는 안전한 영역이라 함은 물에 잠기지 않는 지점들이 위, 아래, 오른쪽 혹은 왼쪽으로 인접해 있으며 그 크기가 최대인 영역을 말한다. 위의 경우에서 물에 잠기지 않는 안전한 영역은 5개가 된다(꼭지점으로만 붙어 있는 두 지점은 인접하지 않는다고 취급한다). 

또한 위와 같은 지역에서 높이가 6이하인 지점을 모두 잠기게 만드는 많은 비가 내리면 물에 잠기지 않는 안전한 영역은 아래 그림에서와 같이 네 개가 됨을 확인할 수 있다. 

이와 같이 장마철에 내리는 비의 양에 따라서 물에 잠기지 않는 안전한 영역의 개수는 다르게 된다. 위의 예와 같은 지역에서 내리는 비의 양에 따른 모든 경우를 다 조사해 보면 물에 잠기지 않는 안전한 영역의 개수 중에서 최대인 경우는 5임을 알 수 있다. 

어떤 지역의 높이 정보가 주어졌을 때, 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 계산하는 프로그램을 작성하시오. 

입력

첫째 줄에는 어떤 지역을 나타내는 2차원 배열의 행과 열의 개수를 나타내는 수 N이 입력된다. N은 2 이상 100 이하의 정수이다. 둘째 줄부터 N 개의 각 줄에는 2차원 배열의 첫 번째 행부터 N번째 행까지 순서대로 한 행씩 높이 정보가 입력된다. 각 줄에는 각 행의 첫 번째 열부터 N번째 열까지 N 개의 높이 정보를 나타내는 자연수가 빈 칸을 사이에 두고 입력된다. 높이는 1이상 100 이하의 정수이다. 

출력

첫째 줄에 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 출력한다. 

예제 입력 1 

5
6 8 2 6 2
3 2 3 4 6
6 7 3 3 2
7 2 5 3 6
8 9 5 2 7

예제 출력 1 

5


+ Recent posts