여니의 취준 준비 253

[n1063] 킹 in python

문제 이해를 잘못해서 시간을 꽤 소요했다 ㅠㅠ 킹 도착 위치에 돌이 잇으면 그때만 킹과 돌의 위치를 모두 변경하는 것이고 돌이 도착위치에 없다면 킹의 위치만 움직여주면 된다. 이동 방향은 dictionary, index를 이용했다. ord : 65 -> A chr : A -> 65 # T,RT,R,RB,B,LB,L,LT dx = [-1, -1, 0, 1, 1, 1, 0, -1] dy = [0, 1, 1, 1, 0, -1, -1, -1] dic = {'T': 0, 'RT': 1, 'R': 2, 'RB': 3, 'B': 4, 'LB': 5, 'L': 6, 'LT': 7} king, dol, n = input().split() king = list(king) # 열, 행 dol = list(dol) # 열, ..

[n11504] 돌려 돌려 돌림판 in python

ex[0]은 x의 맨 앞자리 수 ey[0]은 y의 맨 앞자리 수 new_array를 만들어서 idx 에러 방지함 사실 index를 어떤식으로 처리해야 하나 고민했음. 예제1) array가 [3 7 8 3 1 9 2 7]라고 생각해본다. m = 3 x= 200 y=311 z가 x보다 크면서 같고, y보다 작으면서 같을 경우에만 카운트를 진행한다. 따라서 x의 맨 앞자리 수 2와 y의 맨 앞자리수 3을 이용하면 손쉽게 값을 구할 수 있다. 리스트에서 2의 위치를 전부 찾는다. 6번째 위치에서부터 시작해서 총 3번의 이동을 통해 z를 만들어야한다. 그리하여 z의 값은 2 7 3 7이 리스트의 맨끝이니까 앞으로 다시 돌아가야하는데 이 과정을 코드로 작성하니 좀 지저분해서 new_array를 만들었다. array..

[n1411] 비슷한 단어 in python

(풀이) 조합을 이용해서 일단 경우의 수를 먼저 뽑았다. 그리고 두 개의 리스트를 이용하여 탐색을 진행한다. (단어 A와 단어 B가 일대일 관계여야한다는 거!) ex) aa ab A B a - a 다음 문자열 탐색에서 a 는 무조건 a랑 이어져야 한다. a - b a랑 a랑 이어져야 하는데 a랑 b랑 이어져서 카운트는 하지 않는다. ex) abca zbxz A B a - z 다음 문자열 탐색에서 a 는 무조건 z랑 이어져야 한다. b - b 다음 문자열 탐색에서 b는 무조건 b랑 이어져야 한다. c-x 다음 문자열 탐색에서 c 는 무조건 x랑 이어져야 한다. a - z a가 z랑 잘 연결되었으니까 문제 없음! 이 예시 같은 경우에는 결과값에 포함 from itertools import combinatio..

[n13900] 순서쌍의 곱의 합 in python

https://www.acmicpc.net/problem/13900 13900번: 순서쌍의 곱의 합 첫 번째 줄에는 입력 받을 정수의 개수 N(2 ≤ N ≤ 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다. www.acmicpc.net 1. 메모리초과 -> 조합 함수 사용 # from itertools import permutations, combinations # # num = int(input()) # inp = list(map(int, input().split())) # for i in inp: # arr=list(combinations(i,2)) # arrs = list(combinations(inp, 2)) # result ..

[n1515] 수 이어 쓰기 in python

(처음 생각) 처음에는 문자열 말고 리스트로 받아와서 작업을 진행했다. 그랬더니 인덱스 처리할 부분때문에 계속 문제가 발생했다. 로그님의 도움을 받아 겨우 몇 시간만에 풀어낼 수 있었던 문제.. :( 문자열 문제는 너무 어려웡.. 이 문제는 이해하는 것부터 어려웠다.. 그래도 문제는 결국 이해했지만! ((이 문제는 문자열로 풀면 훨씬 간단하다는 거..)) 예제 4번) 82340329923 8 12 13 14 20 23 24 29 39 42 43 에서 임의의 숫자를 빼낸 결과물이 82340329923이다. 이 문제는 1부터 시작해가지고 입력값(82340329923 = temp)의 0번째 위치의 값과 비교하면서 결과값을 찾아나간다. num는 1부터 시작해서 +1씩 증가한다. 만약 num의 맨 앞자리 숫자와 ..

[n18511] 큰 수 구성하기 in python

(풀이) 모든 수를 다 따져야 한다 (중복포함) 이때는 순열 + 중복허용을 하는 Product 함수를 사용해야 한다. >> 중첩 루프에 해당하는 데카르트 곱 https://docs.python.org/3.8/library/itertools.html itertools — Functions creating iterators for efficient looping — Python 3.8.12 documentation docs.python.org permutations는 순열이지만 중복 x combination은 조합, (순서 X) list(product(배열, repeat=숫자)) >> [('1', '1', '1'), ('1', '1', '5'), ('1', '1', '7'), ('1', '5', '1'), ..

[n2304] 창고 다각형 - 파이썬

https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net (문제) 창고 다각형의 면적이 가장 작은 창고를 구하는 문제 지붕을 만드는 규칙 지붕은 수평 부분과 수직 부분으로 구성되며, 모두 연결되어야 한다. 지붕의 수평 부분은 반드시 어떤 기둥의 윗면과 닿아야 한다. 지붕의 수직 부분은 반드시 어떤 기둥의 옆면과 닿아야 한다. 지붕의 가장자리는 땅에 닿아야 한다. 비가 올 때 물이 고이지 않도록 지붕의 어떤 부분도 오목하게 들어간 부분이 ..

[n2567] 색종이2 - 파이썬

https://www.acmicpc.net/problem/2567 2567번: 색종이 - 2 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net (문제) 검은색 영역의 둘레 길이를 구하는 문제 (처음 생각) 겹치는 구간은 생각하지 못해서 헤맸다 처음에 생각해냈던 풀이는 검은 상자 전체를 감싸는 사각형의 둘레를 구하는 건줄 알았음. (문제를 제대로 읽자!) (풀이) 일단 상자에 해당하는 공간들을 1로 채운다. 배열은 101 X 101 > 100으로 하지 않는 이유? 상하좌우를 파악할 때 인덱스 범위 밖으로 벗어나는 걸 미리 방지하기 위함..

[n1743] 음식물 피하기 | python | BFS

https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net (처음 든 생각) BFS로 푸는건가? DFS..? 일단 BFS로 한 번 해보자! (풀이) 어마무시하게 시간이 오래 걸렸다.. ㅎ... 마지막 for문을 비효율적으로 돌려서 그런가... ㅠㅠ 현재 위치에 음식물 쓰레기가 있는 경우(1)에만 bfs를 작동시켰다. bfs가 작동되면 그리고 음식물쓰레기가 현재 위치에 있다면 num+=1 없으면 그냥 넘어간다. 현재..