본문 바로가기

알고리즘48

[알고리즘/baekjoon] 1018_체스판 다시 칠하기(python) 문제 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net # 문제의 핵심은 체스판 시작의 색깔이 흰색인 경우와 검은색인 경우이다. # 체스판은 흰색과 검은색 번갈아가며 체크무늬를 이뤄야 한다. # 보드판을 잘라서, 체크무늬가 되도록 색을 고치는 최솟값을 찾는 것이다. 정답 - i와 j의 인덱스로 접근하면 규칙적인 모습이 보인다. (0,0) 짝수 (1,0) 홀수 (2,0) 짝수 (0,1) 홀수 (1,1) 짝수 (2,1) 홀수 (0,2) 짝수 .. 2021. 10. 22.
[알고리즘/baekjoon] 10989_수 정렬하기3(python) 문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net * 개인적으로 현재까지 가장 어렵다고 생각되는 문제! 구현이 어려운 게 아니라 생각하는 것이 어려움(언제나 시간 부족 문제는 어렵네요) # 입력받는 숫자는 0부터 10000사이의 숫자만 입력받는다. 정답 - 이해안되시는 분들을 위해 (저 포함) 예시를 들어보겠습니다. ex) n = 6 m : 2 3 5 7 2 7 num_list : [ 0 0 2 1 0 1 0 2 0 0 0 0.... ] i = 2, 3, 5,.. 2021. 10. 20.
[알고리즘/baekjoon] 2108_통계학(python) 문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net * 이 문제에서 산술평균, 중앙값, 범위는 쉽게 풀 수 있어서 따로 풀이는 하지 않고, 최빈값에 대해서만 포스팅하겠습니다. # Counter, Counter.most_common에 대해서 알고 있어야 한다. # 2차원 배열이나 리스트에 대한 이해도가 있어야 한다. 정답 # Counter는 리스트나 투플, 딕셔너리의 항목들에 대한 개수를 측정하여 ("항목":개수) 형태의 딕셔너리로 반환해주는 함수이다. # .. 2021. 10. 20.
[알고리즘/baekjoon] 7568_덩치(python) 문제 https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net # 2가지 핵심만 알면 해결할 수 있는 문제이다. 1. 입력을 (키, 몸무게) 형태로 입력받아서 리스트에 넣을 수 있는가? 2. 리스트의 각 원소에 접근하여 비교할 수 있는가? 정답 * 궁금하신 점이 있으신 분들은 댓글 남겨주세요 * 코드를 사용하시고 싶은 분들은 아래 github 주소를 남기겠습니다. https://github.com/JunSeokCheon/Codingtest/.. 2021. 10. 20.
[알고리즘/baekjoon] 1181_단어 정렬(python) 문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net # 사전순으로 정렬 후 길이 순으로 정렬하는 것이 핵심이다. # 두 번 정렬하는데 길이 순으로 정렬하는 방법만 알면 쉬운 문제이다. # 중복되는 원소를 제거하는 것은 set 집합 함수를 사용하면 간단하다. # sort에 대한 이해도가 있어야 한다. 문제 # 입력받을 때 rstrip을 쓰는 이유는 sys.stdin.readline() 입력은 개행을 포함하여 입력받기 때문에 제거해줘야.. 2021. 10. 20.
[알고리즘/baekjoon] 2869_달팽이는 올라가고 싶다(python) 문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net # 이 문제는 일반적으로 for, 부등호를 쓰는경우 시간초과 에러가 난다. # 핵심은 정상에 올라간 경우는 미끄러지지 않는다인데, 즉 ↑↓↑↓↑↓하다가 ↑해서 오르면 ↓(마이너스)를 하지 않는다는 것이다. # (A-B) 는 하루동안 오르는 높이이고, (V-B)는 목표지점에 가더라도 마지막은 내려가지 않기 때문에 나온 값이다. # k값이 나눠떨어지지 않으면 하루 더 필요하다는 의미이므로 1을 더해주고, 아니면 그냥 출력해준다. 정답 2021. 10. 19.