[백준] 1254 팰린드롬 만들기 + 팰린드롬 확인법 (python 파이썬)
·
🧩 Problem Solving/[백준]
https://www.acmicpc.net/problem/1254앞에 풀었던 팰린드롬 만들기보다 더 쉬운 문제. 아마 파이썬이라 그런 거 같다아이디어- 이 문제는 주어진 문자열을 건들지 않고, 문자열 뒤에 새로운 문자열을 추가해서 팰린드롬을 만드는 것이다. 따라서 뒷 문자열을 만들기 편하도록 배열을 새로 하나 생성해서 문제를 해결했다.전체 코드text = list(input())N = len(text)back = []def is_pal(x): for i in range(len(x)): if x[i] != x[len(x) - 1 - i]: return False return Truefor i in range(N): if is_pal(text + back): ..
[백준] 1213 팰린드롬 만들기 (python 파이썬)
·
🧩 Problem Solving/[백준]
https://www.acmicpc.net/problem/1213 팰린드롬 특징에 대한 문제. 난이도에 맞는 문제 같다.아이디어- 알파벳 string이 주어졌을 때, 팰린드롬의 가능 여부를 먼저 확인한다.만약 문자열에서 알파벳의 개수가 홀수인 게 2개 이상 존재한다면, 팰린드롬으로 만들 수 없다. - 팰린드롬을 앞, 중간, 뒤 3가지 파트로 분류하고 합쳐서 완성시켜 준다. 전체 코드english_name = list(input())visited = [0] * 26for e in english_name: visited[ord(e) - 65] += 1count = 0for i in range(26): if visited[i] % 2 == 1: count += 1if count >= 2..
[백준] 1244 스위치 켜고 끄기 (python 파이썬)
·
🧩 Problem Solving/[백준]
https://www.acmicpc.net/problem/1244생각보다 오래 걸린 문제. 팰린드롬 처리하는 게 약한 거 같다.그리고 특이하게 정답을 숫자 20개씩 끊어서 출력해야 한다. 덕분에 실수를 많이 했다.아이디어- 일단 배열의 시작은 0이고 스위치 번호는 1부터 시작이니까, 인덱스를 먼저 맞혀주자.간단하게 배열 맨 앞에 -1 같은 더미 값을 추가해 줬다. - 동일한 기능을 하는 코드가 중복되어 사용되므로, 함수를 만들어 사용했다. 처음 문제 풀 때는 그냥 풀긴 했다.전체 코드import sysN = int(input())switchs = [-1] + [int(x) for x in sys.stdin.readline().rstrip().split()]students = int(input())def ..
[백준] 4963 섬의 개수 (python 파이썬)
·
🧩 Problem Solving/[백준]
https://www.acmicpc.net/problem/4963흔한 구역 개수 구하는 문제. 근데 특이한 건 대각선도 연결되어 있는 걸로 생각해야 하는 게 특이하다. 그것만 생각하면 나머진 쉬운 문제.아이디어- 일반적인 상하좌우탐색에서 추가로 대각선 방향도 추가해준다.전체 코드import syssys.setrecursionlimit(10**6)dx = [0, 0, 1, -1, 1, -1, 1, -1]dy = [1, -1, 0, 0, 1, -1, -1, 1]def dfs(x, y): if x = H or y = W: return False #print(x, y) if island[x][y] == 1: island[x][y] = 0 dfs(x, y + ..
[백준] 30804 과일 탕후루 (python 파이썬)
·
🧩 Problem Solving/[백준]
https://www.acmicpc.net/problem/30804 실버2 라는 게 믿기지 않는 문제. 내가 슬라이딩 윈도우 개념을 몰랐다면 못 풀었을 거 같다.이건 왜 실버에 있을까 아이디어- 문제에서 제시하는 과일 두개로 만들 수 있는 최대 길이를 구하기 위해 투 포인트 개념을 사용했다. 생각보다 작은 N의 크기(200000), 널널한 시간제한(2초), 그리고 적은 과일 개수(최대 9개)를 보고 모든 경우를 계산해도 괜찮다고 생각했다. 그래서 슬라이딩 윈도우를 생각하며 왼쪽에서 오른쪽으로 탐색하면서 가장 길이가 긴 경우를 찾았다. -  과일 종류의 개수를 구할 때 편하려고 딕셔너리를 사용했다.전체 코드N = int(input())tangList = list(map(int, input().split()..
[백준] 2563 색종이 (python 파이썬)
·
🧩 Problem Solving/[백준]
2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 2차원 리스트를 활용한 간단한 문제. 아이디어 언뜻 보기에 귀찮은 문제라고 느껴질 수 있다. 근데 문제에서 제공된 범위가 100 100이라는 매우 작은 범위이다. 이런 경우는 모든 좌표를 2차윈 리스트로 간단하게 해결 가능하다. 먼저 100 * 100 의 이차원 리스트에서 값을 전부 False로 선언해 준다. 그리고 각 색종이가 있는 영역의 좌표들을 True로 바꿔주고 마지막으로 True의 개수를 세어서 출력해주면 된다. 전체 코드 N = int(input()) paper..
[백준] 7579 앱 (python 파이썬)
·
🧩 Problem Solving/[백준]
7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 냅색 응용문제. 아이디어 냅색 알고리즘의 기본 원리를 이용해 해결할 수 있다. 이차원 리스트 backpack[x][y]는 x번째 앱까지 y비용으로 얻을 수 있는 최대 메모리값이다. 1. 열의 크기는 제시된 모든 비용의 총합으로 한다. 2 - 1. 현재 앱의 비용 costList [i]가 j보다 크면 그대로 둔다. backpack[i][j] = backpack[i - 1][j] 2 - 2. j 가 더 크면 현재 앱의 유무를 비교해 값을 업데이트해준다. backpack[i..
[백준] 4179 불! (python 파이썬)
·
🧩 Problem Solving/[백준]
4179번: 불!입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자www.acmicpc.net 반나절 삽질한 BFS문제. 문제가 어렵게 느껴지진 않았는데 시간초과, 메모리초과 등등 오답파티가 됐다.아이디어- 문제에서 탈출 조건이 가장자리에 접한 공간에서 탈출할 수 있다고 한다. 이 말은 지훈이가 가장자리에 도착만 하면 자동으로 탈출 가능하다. - 순서는 지훈이가 한번 이동하고 나서 불이 확산되고 1초가 지난다. - 만약 지훈이가 이동한 후 위치에 불이 번진다면 그곳은 못 가는 위치이다. - 이 문제를 해결하려면 지훈과 불 각각의 큐를 만들어서..