본문 바로가기

Algorithm231

[Python3] 백준 2117번 원형 댄스 사용 언어 - Python3 문제 - 원형 댄스 2117번: 원형 댄스 N(1 ≤ n ≤ 32767)명의 사람들이 잔치에서 춤을 추게 되었다. 처음에는 1번부터 N번까지의 사람들이 차례대로, 둥글게 손을 잡고 서 있다. 그리고 춤이 끝날 때에는 이 순서가 반대(거꾸로, 뒤집힌) www.acmicpc.net 정답 규칙 찾기 구현 (정답 맞춘 여부 X) n 경우의 수 0 n == 3 => 경우의 수 1 n >= 4 => 등차수열 이용 2, 4, 6, 9, 12, 16, 20... +2씩 3번 +3씩 2번 +4씩 2번 n = int(input()) if n 2023. 4. 19.
[Python3] 백준 1713번 후보 추천하기 사용 언어 - Python3 문제 - 후보 추천하기 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 정답 list 인덱싱 구현 (정답 맞춘 여부 X) 사진틀과 사진틀 개수를 저장할 list를 만든다. n = int(input()) #사진들 개수 c = int(input()) # 전체 학생의 총 추천 횟수 vote = list(map(int,input().split())) # 추천받은 학생을 나타내는 번호 pic = [] # 사진틀 num_pic = [] # 사진틀 추천개수 for v in vote: .. 2023. 4. 19.
[Python3] 백준 1544번 사이클 단어 사용 언어 - Python3 문제 - 사이클 단어 1544번: 사이클 단어 사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에 www.acmicpc.net 정답 큐를 활용한 구현 (정답 맞춘 여부 X) 1. 각 word를 deque로 저장해준다. picture -> p,i,c,t,u,r,e 2. dq.append(dq.popleft()) dq의 맨 왼쪽 값 p를 없애면서 가장 오른쪽에 append한다. i,c,t,u,r,e,p의 형태 각 원소를 합한 save값이 원래 값인 picture까지 한바퀴를 다 돌면 break save값이 word 리스트 안 다른 원소들에 속.. 2023. 4. 19.
[Python3] 백준 1251번 단어 나누기 사용 언어 - Python3 문제 - 단어 나누기 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 정답 list 인덱싱 구현 (정답 맞춘 여부 X) word = list(input()) answer = [] tmp = [] for i in range(1,len(word)+1): for j in range(i+1,len(word)): a = word[:i] b = word[i:j] c = word[j:] a.reverse() b.reverse() c.reverse() tmp.append(a+b+c) for a i.. 2023. 4. 18.
[Python3] 백준 1283번 단축키 지정 사용 언어 - Python3 문제 - 단축키 지정 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 정답 이중반복문 구현 (정답 맞춘 여부 X) import sys n = int(sys.stdin.readline()) arr = [] for _ in range(n): word = list(map(str, sys.stdin.readline().split())) for i in range(len(word)): if word[i][0].upper() not in arr: arr.append(word[i.. 2023. 4. 9.
[Python3] 1235번 학생 번호 사용 언어 - Python3 문제 - 학생 번호 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net 정답 이중반복문 구현 (정답 맞춘 여부 X) nums[0][-1] , nums[1][-1]을 비교해야하는 문제 answer = [] 빈 리스트에 num[j][-i:] append하기 answer 안에 해당 값이 있다면 break. 없을 때만 리스트에 append answer 안에 들어있는 원소가 n개가 되었다면 i를 출력하고 break n = int(input()) num = [] for _ in rang.. 2023. 4. 9.
[Python3] 1138번 한 줄로 서기 사용 언어 - Python3 문제 - 한 줄로 서기 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 정답 이중반복문 구현 (정답 맞춘 여부 X) 각 자리마다 왼쪽에 있는 키 큰 사람수(cnt)는 총 4자리일때 0 1 2 3 이다. 왼쪽에 있는 키 큰 사람수 arr[i]가 cnt와 동일하고, 해당 자리가 비어있다면, answer[j] 그 자리에 i+1(자릿수가 1부터 시작하므로, 인덱스+1)을 앉힌다. 왼쪽에 있는 키 큰 사람수 arr[i]와 cnt가 동일하지 않고, 해당 자리가 비어있다면, cnt +=.. 2023. 4. 9.
[Python3] 1189번 컴백홈 사용 언어 - Python3 문제 - 컴백홈 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 정답 nx,ny 이동하는 BFS 만들기 (정답 맞춘 여부 X) dx = [-1,0,1,0] dy = [0,-1,0,1] from collections import deque def DFS(x,y,count): global answer visited[x][y] = 1 if [x,y] == [0,c-1]: #오른쪽 맨 윗(집)도착시 if count == k: #거리가 k라면 조건만족.. 2023. 4. 9.
[Python3] 백준 1012번 유기농 배추 사용 언어 - Python3 문제 - 유기농 배추 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 정답 nx,ny 이동하는 BFS 만들기 (정답 맞춘 여부 X) 0. 입력 배추밭 graph(m행*n열)에 graph[x][y] = 1로 배추표시 1. queue를 사용한 BFS(x,y) visit 리스트를 만들지 않아도, grpah의 0과 1로 방문표시가 가능하다. graph[x][y] = 0 방문처리 graph[x][y] = 1 방문하지 않은, 배추가 있는 곳 x,y를 상하좌우로 이동시켜 nx,ny의 새로운 위치에서 gra.. 2023. 4. 9.
[Python3] 백준 1260번 DFS와 BFS 사용 언어 - Python3 문제 - DFS와 BFS 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 정답 BFS, DFS 만들기 (정답 맞춘 여부 X) 0. input, 변수 선언 graph = 정점의 개수+1 만큼의 (n+1,n+1) 0벡터 배열을 만들어준다. visit했는지 여부를 (n+1) 크기의 0벡터로 만든다. BFS, DFS 두개의 리스트로 만든다. graph[a][b] = graph[b][a] = 1 입력되는 간선은 양방향이기 때문에 반대방향도 똑같이 1이다.. 2023. 4. 9.