Programming/Algorithm 237

[백준] #1254 팰린드롬 만들기 python

https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 📕 설명 📕 python의 indexing을 이용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 S=input() for i in range(len(S)): if S[i:]==S[i:][::-1]: print(len(S)+i) break

[백준] #2535 아시아 정보올림피아드 python

https://www.acmicpc.net/problem/2535 2535번: 아시아 정보올림피아드 첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사 www.acmicpc.net 📕 설명 📕 각 대회에 대한 정보를 리스트에 넣고 정렬한 뒤 다시 역으로 score에 대해 정렬합니다. 그리고, dictionary를 생성하여 해당 값에 매칭되는 것이, 해당 팀이 2회 이하 나와야 하므로, 2회 이하로 맞춰주기 위해 2회 받으면 continue로 넘겨줍니다. 그리고, 그 조건에 위배되지 않는 값들은 결과 list에 넣습니다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N..

[백준] #5426 비밀 편지 python

https://www.acmicpc.net/problem/5426 5426번: 비밀 편지 선영이는 남자친구를 위해 연애 편지를 썼다. 선영이는 편지가 남들에게 읽히는 것을 막기 위해서 편지를 암호화하려고 한다. 먼저, 편지의 내용을 정사각형에 작성한다. 그 다음, 시계방향으로 www.acmicpc.net 📕 설명 📕 python의 특수한 indexing을 이용해서 풀이했다. 그리고, N x N 성질의 행렬에 대한 연산을 진행하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 for _ in range(int(input())): S = input() len_S = len(S) li = [S[i:i+int(len_S**(1/2))] for i in range(0,len_S, int(len_S**(1/2)))] res = ..

[백준] #1057 토너먼트 python

https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 📕 설명 📕 토너먼트를 그림그려 보고, 아래와 같은 코드로 구현하였다. 토너먼트의 규칙을 잘 이해해보자. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, kjm, ihs = map(int ,input().split()) result = 0 while kjm != ihs: kjm -= kjm // 2 ihs -= ihs // 2 result += 1 print(result)

[백준] #1021 회전하는 큐 python

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 📕 설명 📕 python의 deque library를 사용하여 풀이하였다. popleft, rotate의 function을 사용했다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 from collections import deque N, M = map(int,input().split()) data = deque([i for i in range(1,N+1)]) N_list = list(map(int,input(..

[백준] #1439 뒤집기 python

https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 📕 설명 📕 각 모서리 부분을 찾아서 2로 나누는 연산을 통해 블럭 단위로 찾아내었다. 그리고 끝이 1로 끝나는 부분에 대해서 예외처리를 진행했다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 S = input() def find_edges(target): cnt = 0 tmp = int(target[0]) for find_me in target: if int(find_me) != tmp: cnt += 1 tmp..

[백준] #1476 날짜 계산 python

https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 📕 설명 📕 다음과 같이, 하나씩의 경우를 제외해가면 풀이하였습니다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 E1, S1, M1 = map(int, input().split()) e, s, m = 1, 1, 1 result = 1 while True: if e == E1 and s == S1 and m == M1: break e += 1 s += 1 m += 1 result += 1 if e >= 16: e -=..

[백준] #1531 투명 python

https://www.acmicpc.net/problem/1531 1531번: 투명 첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌 www.acmicpc.net 📕 설명 📕 python의 list를 100 x 100 의 크기로 만들어서 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, M = map(int, input().split()) result = [[0]*100 for _ in range(100)] for _ in range(N): x1, y1, x2, y2 = map(int, input().split()) for i in range(x1..

[백준] #2992 크면서 작은 수 python

https://www.acmicpc.net/problem/2992 2992번: 크면서 작은 수 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 www.acmicpc.net 📕 설명 📕 python의 permutation library를 사용하여 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 from itertools import permutations from math import inf X = input() min = inf for i in permutations(X,len(X)): str = '' for j in i: str += j if min >..

[백준] #2740 행렬 곱셈 python

https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 📕 설명 📕 행렬 연산을 위해 리스트를 2개를 구성하고 3중 for문을 통해 연산을 진행하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, M = map(int, input().split()) A = [list(map(int, input().split())) for _ in range(N)] M, K = map(int, input().split()) B = [list(map(int, in..