Koala - 14기

문제 https://www.acmicpc.net/problem/1058 Algorithm 직접 친구라면 2-친구이다.( 거리 = 1) 혹은 내가 어떠한 대상 A와 2-친구가 되려면, A와 직접 친구인 누군가와 직접 친구여야 한다. (거리 = 2) 위 두 조건 중 하나라도 만족하면 2-친구이다. 즉, 나와 대상의 거리가 2 이하라면 2-친구이다! 이제 BFS를 돌리면 된다. Code #include using namespace std; #define IAMFAST ios_base::sync_with_stdio(false);cin.tie(0); typedef long long ll; typedef pair pii; typedef pair pll; int n; vector graph[51]; bool visi..
https://www.acmicpc.net/problem/12756 12756번: 고급 여관 플레이어 A의 카드가 남아있다면 "PLAYER A"를, 플레이어 B의 카드가 남아있다면 "PLAYER B"를 출력한다. 모두 죽은 상태라면 "DRAW"를 따옴표 없이 출력한다. www.acmicpc.net 문제 "럭키스톤"은 카드를 통해 대결하는 게임이다. 창식이는 럭키스톤을 자주 한다. 이 게임의 카드에는 공격력과 생명력이 표시되어있다. 왼쪽에는 공격력이, 오른쪽에는 생명력이 숫자로 적혀있다. 서로 꺼낸 카드를 비교하여 남길 카드를 결정하는 데, 카드의 비교는 다음과 같이 이루어진다. 비교하는 카드의 공격력만큼 동시에 서로 상대 카드의 생명력을 깎는다. 줄어든 생명력은 다시 회복되지 않는다. 생명력이 0 이하인..
문제 링크 https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 접근 방법 추가해야하는 가로선이 3개 보다 많거나 불가능할 경우 모두 -1을 출력하라는 요구사항이 있기 때문에 3가지를 넘어가는 경우에 대해선 생각하지 않아도 되고, N과 H 또한 각각 최대 10, 30으로 크지 않아서 최악의 경우에 대해 ((N-1) * H) C 3 = 3,244,140 개의 조합만을 구하면 되기때문에 백트래킹을 이용하여 완전 탐색하는 방법을 생각했습니다. 개인적으로..
https://www.acmicpc.net/problem/11365 11365번: !밀비 급일 당신은 길을 가다가 이상한 쪽지를 발견했다. 그 쪽지에는 암호가 적혀 있었는데, 똑똑한 당신은 암호가 뒤집으면 해독된다는 것을 발견했다. 이 암호를 해독하는 프로그램을 작성하시오. www.acmicpc.net 문제 분석 분류 구현, 문자열 문제 설명 당신은 길을 가다가 이상한 쪽지를 발견했다. 그 쪽지에는 암호가 적혀 있었는데, 똑똑한 당신은 암호가 뒤집으면 해독된다는 것을 발견했다.이 암호를 해독하는 프로그램을 작성하시오.​ 입력 한 줄에 하나의 암호가 주어진다. 암호의 길이는 500을 넘지 않는다. 마지막 줄에는 "END"가 주어진다. (END는 해독하지 않는다.) 출력 각 암호가 해독된 것을 한 줄에 하나..
문제 소스코드 from collections import deque from itertools import combinations n,m=map(int,input().split()) map = [list(map(int,input().split())) for i in range(n)] arr = map[:] ans = 0 dx=[0,0,1,-1] dy=[1,-1,0,0] def virus(): q = deque() # 위에서부터 맵을 돌다가 2를 만나면 바이러스를 퍼뜨림 for i in range(n): for j in range(m): if arr[i][j] == 2: q.append((i,j)) while q: x,y=q.popleft() for i in range(4): nx = x+dx[i] ny=..
4435번: 중간계 전쟁 (acmicpc.net) 간달프 군대의 점수 합 ans_g, 사우론 군대의 점수 합 ans_s으로 변수 선언과 초기화, 두 군대의 종족들 마다 할당된 점수들에 대한 리스트 두 개를 선언 전투 횟수를 입력 변수로 따로 두지 않고 for 문에 넣었습니다 전투 횟수만큼 g, s라는 군대 종족들 인원수를 할당받는 리스트 선언 이중 for 문을 써서 리스트 길이만큼 반복하는 for 문을 써서 전체 총합 리스트 원소에 (각 종족의 점수 * 종족의 인원수)를 계산한 결과를 할당받도록 함 전체 총합을 비교하여비교값에 따라 Battle n(회차): 문제에서 주어진 대사를 출력하도록 하였는데 Battle이 고정이고 n이 회차마다 달라지므로 format을 사용하여 {}안에 회차값인 i + 1을 넣어..
문제 https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 풀이 한줄 요약: 영수가 추측한 수와 strike, ball를 통해서 가능하지 않은 수들을 걸러냄!! 0~999 중에 제거 1. 한 숫자 안에 같은 숫자 있는 수 2. 어떠한 자리에라도 0이 들어가는 수 3. 영수가 추측한 수와 제시된 strike, ball수와 맞지 않는 수 123~999까지의 숫자와 영수가 예측한 숫자의 strike(자리수 같고 숫자 같고)수와 ball(자리수 다르고 숫자..
문제 요약 N개의 수와 N-1개의 연산자가 주어졌을 때, 만들 수 있는 식의 결과가 최대인 것과 최소인 것을 구하는 프로그램 입력 첫째 줄에는 수의 개수가 주어지고, 둘째 줄에는 수가 주어지며, 셋째 줄에는 4개의 연산자의 각각 사용 가능한 개수가 주어진다 ex) 2 5 6 0 0 1 0 출력 첫째 줄에 최대값을, 둘째 줄에 최소값을 출력한다. ex) 30 30 문제 코드 코드 설명 5번 줄까지는 입력을 받는 부분이니 굳이 설명하지 않겠음. go 함수 재귀함수로 매개변수로 받는 add, sub, mul, div의 남은 개수를 파악하고 이에 따라서 다음 연산을 진행한다. 더이상 사용할 연산자가 없으면 계산 값을 res_l에 할당하고 재귀적으로 실행됐던 부분을 반대로 돌아간다. 이후 다른 순서로 또 재귀적으..
https://www.acmicpc.net/problem/23739 23739번: 벼락치기 유체이탈을 할 줄 아는 지환이는 수업에 출석은 했으나 수업을 듣지 않았다. 늘 그랬듯이 시험기간은 찾아오는 법, 지환이는 이제야 공부를 시작했다. $N$개의 챕터를 순서대로 공부해야 하는데, www.acmicpc.net 문제 입력 출력 문제 코드 N = int(input()) time = 30 chap = 0 while (N > 0) : time = 30 while (time > 0) and (N > 0): T = int(input()) if (time / T) >= (1 / 2) or (time >= T): chap += 1 time -= T N -= 1 else : time -= T N -= 1 print(ch..
알고리즘 범위에 해당하는 숫자들이 자릿수마다의 중복되는지 체크하면 된다. 같은 값이 있는지 확인하는 방법으로는 딕셔너리를 떠올렸고 아래와 같이 중복 체크를 해주었다. for item in hotel: d={'0':0, '1':0, '2':0, '3':0, '4':0, '5':0, '6':0, '7':0, '8':0, '9':0} flag=True for s in str(item): if s in d.keys(): d[s] += 1 for v in d.values(): if v >= 2 : flag=False if flag: ans.append(item) 전체 코드 while True: try: n,m=input().split() hotel=list(range(int(n),int(m)+1)) ans=[] ..
문제 https://www.acmicpc.net/problem/1855 1855번: 암호 준표와 세준이는 서로 솔루션을 토론 하면서 다른 사람이 자신들의 솔루션을 듣지 못하게 하도록 서로 메시지를 주고받을 때 메시지를 암호화 하여서 주고받았다. 암호를 만드는 방법은 다음과 www.acmicpc.net 코드 #include #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; char arr[20][20]; int main() { ios::sync_with_stdio(false); cin.tie..
문제 분석 입력의 형태는 주사위의 전개도 값을 주어진다. 이때 주사위의 값의 패턴이 없기 때문에 주사위가 쌓일 때 바닥과 천장의 값을 직접 찾아야 하고 같은 이유로 측면에 놓이는 값들을 구해야한다. 한 쪽 측면에 놓이는 값들의 합중에서 가장 큰 수를 원하기 때문에 한개의 주사위의 옆면에 해당하는 값들중 가장 큰 수만 선정하면 된다. 즉 주사위를 쌓는 경우에 대해서 찾으면 값은 알 수 있게 된다는 의미이다. #include #include using namespace std; // 아래면의 인덱스를 윗면으로 단순히 바꿔줌 int top_val(int index) { if (index == 0) return 5; if (index == 1) return 3; if (index == 2) return 4; i..
KauKoala
'Koala - 14기' 카테고리의 글 목록 (9 Page)