[python] 백준 1439번 뒤집기
알고리즘/백준2022. 1. 31. 21:53[python] 백준 1439번 뒤집기

문제 풀이 문자열 S를 입력받아서 모든 문자를 1로 만들 때 최소한의 뒤집기 횟수를 출력해야 한다. 예제 입력 4를 보면 11001100110011000001 인데 연속된 0만 보자면 00, 00, 00, 00000 총 4개가 있고 연속된 1만 보자면 11, 11, 11, 11, 1 총 5개가 있는 것을 볼 수 있다. 여기서 생각한 방법은 split함수를 쓰는 것이었다. 문자열 S를 입력받고 해당 문자열을 0이나 1을 구분자로 두면 쉽게 풀 수 있을 것 같았다. s1 = s.split('0') s2 = s.split('1') 위와 같이 각각 0과 1로 구분하였을 때 결과이다. 배열에 빈 문자열이 있지만 값이 있을 때만 카운트하면 된다. s1은 연속된 0의 개수의 배열이 될 것이고 s2는 연속된 1의 개수..

[python] 백준 11656번 접미사 배열
알고리즘/백준2022. 1. 28. 23:42[python] 백준 11656번 접미사 배열

문제 풀이 문제에서 나와있다시피 baekjoon의 접미사는 총 8개로 되어있다. 해당 문자열의 길이 = 접미사 개수라고 볼 수 있다. 해당 접미사들을 for문을 돌려 리스트에 넣어주면 모든 접미사들을 구할 수 있다. 사전 순이기 때문에 sort함수를 써서 정렬해주면 된다. 완성된 코드!!👌👌 def func(word): l = list() for i in range(len(word)): l.append(word[i:]) l.sort() return l s = input() for val in func(s): print(val)

[python] 백준 2870번 수학숙제
알고리즘/백준2022. 1. 27. 23:56[python] 백준 2870번 수학숙제

입력 첫 번째 줄 테스트 케이스 수 두 번째 줄부터 문자열 출력 문자열에 대해서 숫자만 뽑아서 비 내림차순으로 출력(비 내림차순에 대해서는 문제 내용에 쓰여있다) 문제풀이 테스트 케이스 수를 입력받고 다음 줄부터는 문자열에서 문자를 제외하고 숫자만 뽑아서 비 내림차순으로 정렬하여 출력해야 하는데 구분한다고 하면 split함수가 생각날 것이다. 하지만 일반적인 split함수로는 문자 하나에 대해서만 구분할 수 있는데 re라이브러리 안에 있는 split함수를 쓰면 구분할 문자가 여러 개여도 구분할 수 있다. re — 정규식 연산 — Python 3.10.2 문서 scanf() 시뮬레이션 파이썬에는 현재 scanf()에 해당하는 것이 없습니다. 정규식은 일반적으로 scanf() 포맷 문자열보다 강력하지만, 더..

[python] 백준 5217번 쌍의 합
알고리즘/백준2022. 1. 14. 10:14[python] 백준 5217번 쌍의 합

입력 첫 번째 줄에는 테스트 케이스 수 두 번째 줄 ~ 네 번째 줄까지 n 출력 n에 대한 순서 쌍 문제 풀이 간단하게 그림을 그리면 사칙 연산으로 순서 쌍을 나눌 수 있다. 순서 쌍을 이루는 수들은 서로 달라야 하기 때문에 4일 때 2 2는 순서 쌍이 되지 않는다. 해당 부분만 주의하면 쉽게 코드를 짤 수 있다. 완성된 코드!!👍 for _ in range(int(input())): x = int(input()) n = x//2 l = [] for i in range(1, n+1): if i < x - i: l.append(f'{i} {x - i}') print(f'Pairs for {x}: ' + ', '.join(val for val in l))

[python] 백준 15233번 Final Score
알고리즘/백준2022. 1. 2. 18:13[python] 백준 15233번 Final Score

입력 첫 번째 줄에는 A팀 인원수, B팀 인원수, 득점한 선수 인원수 두 번째 줄에는 A팀 선수들의 이름 세 번째 줄에는 B팀 선수들의 이름 네 번째 줄에는 득점한 선수들의 이름 출력 득점한 인원이 더 많은 선수팀 출력, A팀과 B팀의 득점한 인원이 같을 때 "TIE" 출력 문제 풀이 간단하게 득점한 선수가 A팀, B팀에 얼마나 있는지 확인하여 결과값을 출력해주면 된다. 또 중복된 코드가 있어서 함수를 하나 만들어 불필요한 코드를 없앴다. 완성된 코드!!👍 def p_count(p_l): cnt = 0 for val in p_l: cnt += g_p.count(val) return cnt a,b,p = map(int, input().split()) a_p = input().split() b_p = inp..

[python] 백준 13229번 Selection Sum
알고리즘/백준2022. 1. 1. 17:26[python] 백준 13229번 Selection Sum

입력 첫 번째 줄에는 배열 크기 두번째 줄에는 배열 안의 값들 세 번째 줄에는 테스트 케이스 개수 네 번째 줄부터는 배열 위치(시작, 끝)에 해당하는 값들의 누적 합 출력 배열 1번째 요소에서 1번째 요소까지의 합 = 5 배열 0번째 요소에서 9번째 요소까지의 합 = 42 배열 5번째 요소에서 7번째 요소까지의 합 = 12 배열 9번째 요소에서 9번째 요소까지의 합 = 1 배열 1번째 요소에서 8번째 요소까지의 합 = 40 문제 풀이 내장 함수 sum을 이용하면 쉽게 풀 수 있다. 완성된 코드 n = int(input()) n_l = list(map(int, input().split())) for _ in range(int(input())): a, b = map(int, input().split()) p..

[python] 백준 1037번 약수
알고리즘/백준2021. 12. 6. 22:17[python] 백준 1037번 약수

문제 풀이 보자마자 그림을 한번 그려봤다. 검은색 : 테스트 케이스의 입, 출력 빨간색 : 테스트 케이스 출력에서의 1과 자기 자신 파란색 : 찾아낸 규칙 처음에 짜 본 코드다. sorted 내장 함수로 입력받은 수들을 정렬하였다. 또한 N의 약수의 개수가 홀수일 때, 짝수일 때를 판별하여 N을 구하도록 했다. ex) 홀수일 경우, N의 약수의 개수 = 1, input = 5, out = 25 25의 약수는 1을 제외한 5 뿐이기 때문에 제곱하여 반환시켜주면 25가 나온다. ex) 짝수일 경우, 입력받은 약수들이 list형태로 있기 때문에 최솟값 * 최댓값을 하면 N이 나오게 된다. N = int(input()) l = sorted(map(int, input().split())) if N % 2 == 1..

[python] 백준 1003번 피보나치 함수
알고리즘/백준2021. 12. 5. 23:25[python] 백준 1003번 피보나치 함수

문제 풀이 이해가 잘 안 될 때 직접 그림을 그려보는 것도 좋은 방법이다. 1열 : N, 2열 : 0이 등장하는 횟수, 3열 : 1이 등장하는 횟수라고 보면 될 것 같다. 이렇게 쓰고보니 2열과 3열에서 규칙이 보여 아래와 같이 작성해봤다. 1의 개수처럼 0도 피보나치로 가능하였기 때문에 아래의 코드처럼 돌렸지만 시간 초과가 나왔다. import sys def fibonacci0(n): if n == 0: return 1 elif n == 1: return 0 else: return fibonacci0(n-1)+fibonacci0(n-2) def fibonacci1(n): if n == 0: return 0 elif n == 1: return 1 else: return fibonacci1(n-1)+fib..

[python] 백준 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰
알고리즘/백준2021. 11. 26. 22:00[python] 백준 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰

문제 풀이 문제에 있는 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수를 리스트에 저장해두고 입력을 다른 리스트에 받아 두 리스트의 차이값을 출력하면 되는 문제이다. 완성된 코드!!👍😊 chess = [1, 1, 2, 2, 2, 8] count = list(map(int, input().split())) for i in range(len(chess)): chess[i] -= count[i] print(' '.join(map(str, chess)))

[python] 백준 2161번 카드1
알고리즘/백준2021. 11. 25. 21:18[python] 백준 2161번 카드1

문제 풀이 문제에서 N=4인 경우에 버린 카드는 1 3 2가 되고 남는 카드는 4가 되어 출력 결과가 1 3 2 4가 되길래 짝수 홀수로 나누면 될 줄 알았다. 하지만 테스트 케이스 1번에서 출력 결과가 1 3 5 7 4 2 6이 되는 것에 대해서 도무지 이해가 안 되어 결국 그림을 그려 이해를 하고 어떻게 하면 풀 수 있을지를 알아냈다. 그림에서와 같이 cnt 값에 따라서의 2가지의 작업을 돌리면 되었다. 1. cnt가 홀수면 첫 번째 원소 값을 원래 리스트에서 pop 하고 다른 리스트에 append 2. cnt가 짝수면 첫 번째 원소 값을 원래 리스트에 append 하고 원래 리스트에서 첫 번째 위치에 있는 원소 값을 pop 대부분의 사람들은 데크(dequeue)로 푸셨던데 아직 본인은 쓸 줄 몰라 ..

반응형
image