일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C언어
- String
- BASIC
- Algorithm
- BFS
- dfs
- 종만북
- greedy
- 따라하며 배우는 C언어
- BOJ
- server
- Cleancode
- 인프런
- JavaScript
- graph
- 생활코딩
- 백준
- 따배씨
- Math
- programmers
- php
- sorting
- 정수론
- Algospot
- C
- udemy
- DP
- 따라하면서 배우는 C언어
- web
- Python
- Today
- Total
목록Algorithm PS/BOJ (113)
몽상실현개발주의
[BOJ] 1451 / 직사각형으로 나누기 / Python 파이썬 https://www.acmicpc.net/problem/1451 1451번: 직사각형으로 나누기 첫째 줄에 직사각형의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 직사각형에 들어가는 수가 가장 윗 줄부터 한 줄에 하나씩 M개의 수가 주어진다. N과 M은 100보다 작거나 같은 자연수이 www.acmicpc.net 풀이 브루트포스 알고리즘 문제로, 나눌 수 있는 경우를 모두 계산하여 해결하였다. 직사각형으로 나눌 수 있는 경우는 총 6가지가 나왔다. import sys input = sys.stdin.readline N, M = map(int, input().split()) nums = [] for _ in range(N): n..
[BOJ] 1107 / 리모컨 / Python 파이썬 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 풀이 처음 시도를 숫자가 조합되는 경우를 고려하는 방법으로 접근하였지만 풀지 못하였다. 다음 방법으로는 가능한 전체 채널 번호를 모두 탐색하는 방법으로 해결하였다. 이동하려고 하는 채널의 숫자가 비교적 작기 때문에, 완전탐색으로 충분히 가능하다는 것을 생각하지 못하고 어려운 방법 먼저 구상한것 같다. N = int(input()..
[BOJ] 1476 / 날짜 계산 / Python 파이썬 https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 풀이 각각의 수 E, S, M을 1부터 시작하는 15, 28, 19 진법으로 생각하여 풀이하였다. check = [1, 1, 1] cnt = 1 while True: if check == ESM: print(cnt) break check[0] = (check[0] + 1) % 16 if not check[0]: check[0] = 1 check[..
[BOJ] 1744 / 수 묶기 / Python 파이썬 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 풀이 양수, 1, 0, 음의 정수에 대해 구분하여 계산해 주는 문제이다. 수열의 두 수를 묶어 최대값을 만들기 위해 다음과 같은 로직을 세웠다. 수열이 양수인 경우: 큰 수 부터 2개씩 묶어 곱하기 양수에 1이 포함 된 경우: 곱했을 경우 보다 더했을 경우가 더 큰 수가 된다. 수열이 음수인 경우: 작은 수 부터 2개씩 묶어 곱하기 0: 음..
[BOJ] 11399 / ATM / Python 파이썬 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 풀이 기다려하는 시간이 어떻게 counting 되는지를 먼저 생각하였더니 쉽게 해결하였다. ATM 에 다섯 사람이 대기한다고 생각해 보자 1번 : A 시간 / 2번 : B 시간 / 3번 : C 시간 / 4번 : D 시간 / 5번 : E 시간 1번부터 5번까지의 사람 순서대로 대기하였을때 counting 되는 시간은 A A+B A+B+C A+B+C+D A+B+C+D+E 가 ..
[BOJ] 1931 /회의실 배정 / Python 파이썬 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 회의실을 배정 할 수 있는 경우 중 가장 좋은 조건을 선택하는 탐색 문제이다. 한번의 탐색 만으로 해답을 찾기 위해서는, 탐색을 하는 순서가 중요하다. 회의실을 예약 할 수 있는 기회가 많이 주어지는 경우는, 이전 회의가 되도록 이른시간에 종료되는 경우이다. 이른시간에 종료되는 회의 중에서도 빨리 시작하는 회의가 우선적으로 예약될 가능성이 높다. 위 두가지의 조건으로 미리 회의실 예약 시간을 정렬하여 탐색을 진행하였다. N = int(input()) ..
[BOJ] 1783 / 병든 나이트 / Python 파이썬 https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 모든 경우의 수 고려하는 방법으로 구하는 문제가 아닌 조건을 단순화하여 계산하는 문제이다. 나이트는 체스판의 가장 왼쪽 아래에서 오른쪽 방향으로 위 또는 아래로 움직일 수 있다. 이것은 충분한 세로 공간만 존재한다면, 오른쪽 방향으로만 움직이게 된다는 것이다. 1. 오른쪽 1칸 위 2칸 -> 오른쪽 1칸 아래 2칸 == 오른쪽 2칸 2. 오른쪽 2칸 위 1칸 -> 오른쪽 2칸 아래 1칸 == 오른쪽..
[BOJ] 10610 / 30 / Python 파이썬 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 풀이 주어진 숫자들의 조합으로 가장 큰 30의 배수를 찾는 문제이다. 숫자를 정렬하여 0이 포함되는지 확인하고, 나머지 숫자들이 3의 배수인지 확인하였다. 3의 배수는 각 자리수를 더한 값이 3의로 나누어 떨어지는 숫자이다. nums = list(map(int, list(input()))) nums.sort(reverse=True) def che..