프로그래밍 공부 90

[99번] 유사도

nn개의 숫자들로 이루어진 두 개의 수열 a=a1 a2⋯ana=a1 a2⋯an와 b=b1 b2⋯bnb=b1 b2⋯bn가 있다. 두 수열 aa와 bb의 유사도란 두 수열에서 같은 위치의 숫자가 일치하는 개수이다. 예를 들어, a=5 2 3 7 6 1a=5 2 3 7 6 1와 b=5 7 1 2 6 3b=5 7 1 2 6 3가 주어지면, 제일 첫 번째 숫자 5와 뒤에서 두 번째 숫자 6이 일치하므로 aa와 bb의 유사도는 2이다. 우리는 두 번째 수열 bb에 대해서만 임의의 구간 [i,j][i,j]를 선택해서 이 구간에 속한 수들을 회전시킨다. 여기서, 회전이라는 것은 이 구간에 속한 수 bi bi+1⋯bj−1 bjbi bi+1⋯bj−1 bj를 bj bj−1⋯bi+1 bibj bj−1⋯bi+1 bi와 같이 앞..

CodeGround 2020.08.13

[98번] 소수 수열

문제 수학과 프로그래밍을 좋아하는 AA와 BB 두 사람이 다음과 같은 게임을 하고 있다. 둘은 각각 1 이상 30,000 미만의 수 하나를 고른다. 이 수를 가지고 점수를 계산하여 큰 쪽이 이기는 게임이다. 어떤 수의 점수는, 이 수부터 시작해서 한 자리를 골라 이 자리의 숫자를 지워서 소수를 만들고, 이 과정을 연속해서 최대로 많이 만들 수 있는 소수의 개수이다. 이 과정에는 입력받은 원래의 수도 포함된다. 예를 들어, 127은 자신이 소수이다. 만약 7을 지우면 12가 되고, 이는 소수가 아니다. 그러나, 7을 지우는 대신 2를 지워서 17, 다시 1을 지워서 7을 만들면 총 3개의 소수를 연속해서 만들 수 있으며, 127의 점수는 3, 즉 127에서 규칙을 지키면서 소수를 최대로 많이 만들 수 있는..

CodeGround 2020.08.13

[Unity] Layer 정렬하기

물체가 겹쳐져 있을 때 앞에 위치했으면 하는 object와 뒤로 빠졌으면 하는 object가 있을 것이다. 이러한 것들을 지정해주는 것이 Sorting Layer이다. +를 눌러 Layer를 추가한다. 뒤로 갔으면 하는 Layer일수록 상위에 배치한다. 예를 들어, 가장 뒤에 위치해야 하는 BackGround같은 경우, 최상단에 위치하게끔 조정한다. object를 눌러 Sprite Renderer > Sorting Layer에서 원하는 Sorting Layer를 선택할 수 있다.

Unity 2020.08.13

[19542번] 전단지 돌리기

문제 현민이는 트리 모양의 길 위에서 오토바이를 타고 전단지를 돌리려고 한다. 현민이의 목표는 케니소프트에서 출발하여 모든 노드에 전단지를 돌리고, 다시 케니소프트로 돌아오는 것이다. 현민이는 힘이 좋기 때문에 현재 노드에서 거리가 D 이하인 모든 노드에 전단지를 돌릴 수 있다. 날씨가 매우 덥기 때문에, 현민이는 최소한만 이동해서 목표를 달성하고 싶다! 현민이를 위해 현민이가 이동해야 하는 총 거리를 구해주자. 입력 첫번째 줄에는 노드의 개수 N(1≤N≤100 000)과 케니소프트의 위치 S(1≤S≤N), 힘 D(0≤D≤N)이 주어진다. 두 번째 줄부터 N번째 줄까지, 트리의 간선 정보를 의미하는 두 자연수 x, y가 공백으로 구분되어 주어진다. 이는 x번 노드와 y번 노드가 연결되어 있음을 의미한다...

백준 2020.08.08

[15999번] 뒤집기

문제 어느 날, 네오는 길을 걷다가 격자판 하나를 주웠다. 그 격자판은 N 행 M 열로, 각 격자는 흰색 또는 검은색으로 칠해져 있다. 네오는 이 격자판에는 분명 엄청난 비밀이 숨겨져 있을 것이라고 생각해 나중에 해독을 시도해 보기로 하였다. 아래 그림은 격자판 상태의 예시이다. 네오가 잠시 외출한 사이, 프로도는 네오의 격자판을 이리저리 살펴보았다. 얼마 뒤, 하나의 격자를 누르게 되면 자신을 포함해 그 격자와 연결된 모든 칸들의 색이 반전된다는 사실을 관찰할 수 있었다. 여기서, 두 격자가 연결되었다는 것은 두 격자 사이를 서로 같은 색이면서 변을 공유하는 격자들로만 이동하여 오갈 수 있다는 것을 뜻한다. 집으로 돌아온 네오는 프로도가 격자판의 상태를 바꿔버렸다는 것을 알고 좌절했다. 하지만 최종 상..

백준 2020.08.05

[Unity] 가로모드 설정하기

1. 게임 화면 설정 게임 화면 내에서 아래 버튼을 클릭한다. 추가 버튼을 누른다. Label은 원하는 이름으로 지정해주고 Type은 'Ascpect Ratio'로 바꿔준다. 그리고 Width & Height에서 가로 : 세로 비율을 결정한다. 해상도 비율을 추가하였으면 추가한 비율로 바꿔준다. 2. 가로 고정(세로로 화면이 돌아가지 않게 하기) File > Build Settings > Player Settings...을 누른다. 그러면 Inspector창에 PlayerSettings화면이 뜰 것이다. 여기서 Resolution and Presentation을 클릭해준다. 그리고 Portrait와 Portrait Upside Down 체크를 해제해준다. 이 버튼은 휴대폰의 화면이 돌아갔을 때 게임 화면..

Unity 2020.08.05

[Unity] Android Device에서 실행 하기

[Unity 내에서 할 일] 1. 플랫폼 바꾸기 File > Build Settings > Android를 누른다. 만약, Android module이 다운로드되어 있지 않다면 다운로드 해준다. 그리고 오른쪽 아래 버튼 중 Switch platform을 눌러 준다. 2. Device 바꾸기 Edit > Project Settings... > Editor로 이동한다. [Android Device 내에서 할 일] 1. USB 디버깅 허용하기 설정 > 휴대전화 정보 > 소프트웨어 정보에 들어간 후, 빌드번호를 연타한다. 그러면 설정에 개발자 옵션이 활성화되었을 것이다. 개발자 옵션에 들어가서 USB 디버깅을 허용해준다. 2. Unity Remote5 설치하기 Play store에서 Unity Remote5를 ..

Unity 2020.08.05

[2132번] 나무 위의 벌레

문제 전산학(Computer science)에서 트리란 사이클이 없는 그래프를 말한다. 트리(Tree)라는 이름이 의미하듯, 이러한 구조는 나무의 모습에서 유래한다. 즉, 트리의 각 간선(edge)들이 나무의 가지를 나타내고, 각 정점(node)들은 가지가 갈라지는 지점을 의미한다. 또한 트리의 루트는 나무의 뿌리를 의미한다. 이러한 구조는 일반적인 나무의 구조에 해당하지만, 트리 자체의 성질에 주목하면 실제 나무와는 다소 다른 구조가 되기도 한다. 우리가 생각하려는 나무는 루트가 없는 트리이다. 이때 트리의 각각의 간선은 나무의 가지에 해당하고, 트리의 각 정점은 나무 위에서 열매가 매달려있는 지점을 의미한다. 각각의 정점에는 몇 개의 열매가 매달려 있다. 물론 열매 없이 가지가 갈라지는 경우도 있으므..

백준 2020.05.26

[1992번] 쿼드트리

문제 흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압축하여 간단히 표현할 수 있다. 주어진 영상이 모두 0으로만 되어 있으면 압축 결과는 "0"이 되고, 모두 1로만 되어 있으면 압축 결과는 "1"이 된다. 만약 0과 1이 섞여 있으면 전체를 한 번에 나타내지를 못하고, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 이렇게 4개의 영상으로 나누어 압축하게 되며, 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다 위 그림에서 왼쪽의 영상은 오른쪽의 배열과 같이 숫자로 주어지며, 이 영상을 ..

백준 2020.05.13

[10845번] 큐

문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 ..

백준 2020.05.09