목록boj (64)
블로그 언저리인 무언가
문제 : 14890 경사로 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 지도가 주어졌을 때, 가로, 세로로 경사로를 놓으며 길을 만들어 지나갈 수 있는 길의 수를 출력하는 문제이다. 모든 가로세로를 확인하면서 높이가 같다면 길이를 늘리고 올라가는 경사로나 내려가는 경사로를 세울 때 지을 수 있다면 길이를 줄인다. 길의 끝까지 왔을 때 길이가 음수이거나 도중에 경사로를 놓는 것이 불가능한 상황이 나오면 세지 않는다. Code #include #define ll long long using namespace std; ll N, M, ..
문제 : 1057 토너먼트 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 토너먼트 1라운드에서 번호가 주어졌을때, 두 참가자가 몇라운드에서 만나는지를 출력하면 되는지 문제이다. 번호를 1번이 아닌 0번부터 생각해보면 만나는 사람은 2로 나눴을때의 몫이 같으므로 같을때까지 반복해주면 된다. Code #include #define ll long long using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); ll N, a, b, ans=1; cin ..
문제 : 14889 스타트와 링크 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 짝수인 수의 사람이 주어졌을 때, 절반으로 나눠 각 팀 능력치 합의 차이가 최소일 때 그 값을 출력하는 문제이다. next_permutation을 사용해 모든 경우의 수를 구하고 각 경우의 능력치 차이를 구해 최솟값을 갱신한 후 출력하면 된다. Code #include #define ll long long #define INF 987654321 using namespace std; int main(){ ios::sync_with_stdio(0); ci..
문제 : 10779 쇠막대기 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저� www.acmicpc.net 쇠막대와 레이저의 위치가 괄호로 주어졌을 때 잘린 막대기의 총개수를 출력하는 문제이다. '(' 괄호가 들어오면 겹쳐진 쇠막대기의 개수를 1개 늘리고 ')' 괄호가 들어오면 레이저 거나 막대가 끝이 난 것이므로 막대기의 개수를 줄이고 앞의 괄호를 판단해 레이저인지 체크한 후 1 더하거나 겹쳐진 막대의 개수만큼 더한다. Code #include #define ll long long using namespace std; int main(){ ios:..
문제 : 1235 학생 번호 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부� www.acmicpc.net 학생 번호가 주어지면 뒤에서부터 잘라 모든 학생을 구분할 수 있는 최소 길이를 출력하는 문제이다. 입력받은 문자열을 뒤집은 뒤 부분 문자열로 잘라 map에 저장해 똑같은 key를 가진것이 있나 체크하고 있다면 길이를 1늘려 반복해 최소 길이를 찾게 했다. Code #include #define ll long long using namespace std; int main(){ ios::sync_with_stdio(0); ci..
문제 : 1668 트로피 진열 1668번: 트로피 진열 민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열 www.acmicpc.net 배열의 앞과 뒤에서 눈에 보이는 트로피 개수를 세는 문제이다. 순차적으로 높이를 체크하면서 지금까지의 최고 높이보다 높다면 최고 높이를 갱신하고 보이는 트로피의 개수를 늘려주면 된다. Code #include #define ll long long using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); ll N, arr[55]={0}, ans[2]={0,}, chk[2]={..
문제 : 1058 친구 1058번: 친구 지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람� www.acmicpc.net 친구, 친구의 친구가 가장 많은 사람의 친구 수를 출력하는 문제이다. 거리가 2 이내인 정점의 개수의 최댓값을 구하면 되므로 각 정점마다 BFS로 체크하다 거리가 2 이상 넘어가면 탈출하도록 코드를 짜고 최댓값을 취합해 출력하면 된다. Code #include #define ll long long using namespace std; ll N, ans=0; string arr[55]; ll BFS(ll st){ ll visit[55], re..