Programming/Algorithm
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/ABRiq/btr8w8pdrc0/UdmrEndUkPXdsKppP3ASj1/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/BmCSH/btr8uRAv6dt/p2ArGlThZlXox6ctUB5jz0/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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 -=..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/kLVM9/btr8gwcAGFU/9qAGX1yslBrmJe5LgPK8IK/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/lLsBr/btr7TjY3KL1/LAKf2Cfp6qI2k9cWSMKHG1/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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 >..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/pJQUP/btr7xWc1uap/3gQHKx1cgPtGnk9omLI8ek/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
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..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/usQLK/btr61ljsk6w/WtZGhJPaUkvBwGuYoezuk1/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 📕 설명 📕 2차원 배열에 대해 접근하기 위해서 아래와 같이 2중 for문을 이용했다. 그리고 덧셈 부분에 대해 indexing으로 접근했다. 🧑🏻💻 나의 풀이 🧑🏻💻 N, M = map(int, input().split()) li = [] dp = [[0] * (M + 1) for _ in range(N + 1)] for _ in range(N): li.appen..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/yCQ8E/btr6Nk5QOF0/jD81KnVUYgbUEGmuKjbTJk/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
https://www.acmicpc.net/problem/1094 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 📕 설명 📕 입력받은 값 X에 대해서, while문과 for문을 통해 1, 2, 4, 8, 16, 32, 64 값을 역순으로 하나씩 나눠지는 것을 count한다. 🧑🏻💻 나의 풀이 🧑🏻💻 X = int(input()) X_num = [64, 32, 16, 8, 4, 2, 1] count = 0 while X > 0: for target in X_num: if X // target == 1:..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bQNaXo/btr6CfwJ8T7/UKhmFMlDUmTLf3yDI97zDK/img.png)
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
https://www.acmicpc.net/problem/1522 1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net 📕 설명 📕 문자열의 형태를 왼쪽에서부터 생각하여 풀이하였다. 원형의 형태이므로 posit을 왼쪽부터로 생각하여, 만약 오른쪽에 인덱스가 S의 길이를 넘어가면 다시 원형임을 고려하여 처음부터 대입하였다. 🧑🏻💻 나의 풀이 🧑🏻💻 import math S = list(input()) a_count = S.count('a') result = math.inf posit = 0 while posit < ..
![](https://tistory1.daumcdn.net/tistory/5081514/skin/images/no-image.jpg)
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 📕 설명 📕 python의 Counter library를 사용하여 풀이했다. book_str list에 해당 문자열들을 넣고, 해당 문자열들에 대한 가장 많이 팔린 책들의 값을 most_sold_count에, most_sold_book_list에 most_sold_count 값을 가지는 문자열이 여러 개가 있을 경우를 감안하여 list로 생성하여 반영하였다. 그리고 iteration을 통해..