문제문제졸업을 앞둔 연길이는 크리스마스가 다가올수록 외로움을 느낀다.그런 연길이를 위해 동우는 소개팅을 시켜주지는 않고 연길이의 이상향을 찾는 것을 도와주고자 한다.MBTI 신봉자인 연길이는 자신과 정반대인 사람에게 매력을 느낀다. 즉, MBTI의 네가지 지표가 모두 자신과 반대인 사람이 연길이의 이상형이다.MBTI는 다음과 같은 네 가지 척도로 성격을 표시한다. 각각의 척도는 두 가지 극이 되는 성격으로 이루어져 있다.지표설명외향(Extroversion)내향(Introversion)선호하는 세계:세상과 타인 / 내면 세계감각(Sensation)직관(iNtuition)인식형태: 실제적인 인식/ 실제 너머로 인식사고(Thinking)감정(Feeling)판단기준: 사실과 진실 위주 / 관계와 사람 위주판단(..
분류 전체보기
문제 https://www.acmicpc.net/problem/2839문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)출력..
문제 https://www.acmicpc.net/problem/15686 문제크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다.이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다.임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |..

문제 & 링크https://www.acmicpc.net/problem/20529 풀이1. 입력 및 출력의 개수가 많기에 빠른 입출력을 사용한다.2. MBTI의 개수는 16개이기에 비둘기집 정리에 의해 N이 33개 이상이면 무조건 같은 MBTI 3개가 나온다. 따라서 N이 33개 이상일 때는 답을 0으로 출력해준다.3. N의 개수를 100,000개에서 최대 32개로 줄였으니, 백트래킹을 사용하여 MBTI 조합을 찾아준다. 이때 depth를 사용하여 현재 조합 내에 있는 MBTI의 개수를 판단해준다.4. depth가 3일 경우 심리적 거리를 계산해준다.5. 계산식은 E_cnt * I_cnt + S_cnt * N_cnt + T_cnt * F_cnt + J_cnt * P_cnt이다.6. 심리적 거리의 최솟..

문제 https://www.acmicpc.net/problem/2164 Algorithm Code#include #include using namespace std;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); queue Q; int N; cin >> N; for (int i=1;i
https://www.acmicpc.net/problem/2740 단순 행렬곱셈 문제이다. 우리에겐 넘파이가 있지만... 백준에선 직접 곱해주어야 한다.def main(): n, _ = map(int,input().split()) arr = [] for _ in range(n): arr.append(list(map(int,input().split()))) m, k = map(int,input().split()) brr = [] for _ in range(m): brr.append(list(map(int,input().split()))) ans = [[[0] for _ in range(k)] for i in range(n)] ..

잡설예전에 풀었던 문제들 다시 풀어봤다. 그냥 푸는것보다 예전보다 빠르거나 숏코딩으로 짜보는 것도 재미있을 것 같아서 옛날에 짠 코드들을 비교해보면서 짜보았다.문제1895 필터풀이단순하게 3*3 기준으로 생각해보면, 가장자리를 제외한 1~n-1, 1~m-1의 좌표와 그 좌표 주변의 값들만 확인하면 된다. dx, dy를 능숙하게 다룰 수 있는 사람이라면 해당 개념을 이용해 간단하게 해결할 수 있다. 값들의 크기가 그리 크지 않아서 단순하게 매번 배열을 새로 만들던, 슬라이싱을 하던 상관 없이 해결 할 수 있다.코드n,m=map(int,input().split())a=[input().split()for i in range(n)]x=[0,0,0,1,1,1,-1,-1,-1]y=[0,1,-1,1,0,-1,1,0,..
문제KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다.같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-99, -2, -1, 4, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 용액의 ..
문제 https://www.acmicpc.net/problem/12101문제정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.1+1+1+11+1+21+2+12+1+12+21+33+1이를 사전순으로 정렬하면 다음과 같이 된다.1+1+1+11+1+21+2+11+32+1+12+23+1정수 n과 k가 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법 중에서 k번째로 오는 식을 구하는 프로그램을 작성하시오.입력첫째 줄에 정수 n과 k가 주어진다. n은 양수이며 11보다 작고, k는 231-1보다 작거나 같은 자연수이다.출력n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경..

https://www.acmicpc.net/problem/17204알고리즘그래프를 그리고, 0번에서 시작하여 k번까지의 최소 거리를 찾는 문제이다.간선 사이의 거리를 1로 설정하여 다익스트라 알고리즘을 돌려준 뒤에 distance배열에서 k번째 원소의 값을 읽어와 INF면 -1을, 아니면 거리를 출력해주면 된다.코드import sysimport heapqinput = sys.stdin.readlineINF = int(1e9)n, target = map(int, input().split())graph = [[] for _ in range(n)]distance = [INF] * n for a in range(n): b = int(input()) graph[a].append((b, 1)) def..

문제 https://www.acmicpc.net/problem/11123https://www.acmicpc.net/problem/17142 Algorithm Codeimport syssys.setrecursionlimit(100000)T = int(input())def dfs(y,x): graph[y][x] = '.' dy = [0,1,0,-1] dx = [1,0,-1,0] for k in range(4): ny = y + dy[k] nx = x + dx[k] if 0
https://www.acmicpc.net/problem/2346입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 최대 100이다.각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. p의 길이는 1보다 크거나 같고, 100,000보다 작거나 같다.다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. (0 ≤ n ≤ 100,000)다음 줄에는 [x1,...,xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. (1 ≤ xi ≤ 100)전체 테스트 케이스에 주어지는 p의 길이의 합과 n의 합은 70만을 넘지 않는다.출력각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. 문제 코드from collec..