본문 바로가기

Algorithm/백준 BOJ19

[백준] [Python] #14503 로봇청소기 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 가장 기본적인 구현 문제에 해당한다. 1차 시도 시키는 대로 코드로 옮기는게 장땡이란 생각으로 옮긴 코드인데 청소를 하지 못하는 경우를 처리하는게 복잡해졌다. import sys sys.stdin = open("input.txt", "r") n,m = map(int, input().split()) r,c,d = map(int, input().split()) #0북,1동,2남,3서 graph = .. 2022. 4. 16.
[백준] [Python] #1062 가르침 https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 풀어보려고 보니, 이전에 실패를 했다가 해결 못했던 문제였다. 처음에는 아 파이썬이면 string처리 어렵지않지~이러고 얕보고 풀기 시작했는데, 과거의 내가 실패로 놔두었던 이유가 있었다. 1차 시도 1. alphabet 리스트를 만들어서 2. 주어진 단어를 순회하면서 각 알파벳이 몇번째 단어에서 등장하는지 확인 2-1. 한 단어에서 중복해서 등장하는 것 처리가 필요할것 같았지만 그러면 시.. 2022. 4. 16.
[백준] [Python] #7576 토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 3차원 토마토 문제를 보다가 2차원 토마토 문제를 먼저 풀기로 했다. 다른 node에 영향을 주는 노가다 문제니 DFS 혹은 BFS인데, 최소라는 단어가 나오면 일단 BFS로 가라 했다. 그래서 아래와 같이 풀었는데, 음 찬찬히 다시보니 문제가 굉장히 많은 코드이지만 가장 큰 문제가 2가지 정도 있다. import sys from collections import deque sys.. 2022. 2. 22.
[백준] [Python] #13904 과제 https://www.acmicpc.net/problem/13904 13904번: 과제 예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다. www.acmicpc.net 처음 읽어봤을 땐 문제가 짧아서 금방 풀수 있을 줄 알았건만,, 문제 읽고 한 10분은 뭐라하는 건지 감도 안왔다. 앞에서부터 찾아보면, 해당 일에 마감이 지나지 않은 과제 중 점수를 가장 큰걸 골라도 답이 아니다. 인간 지능으로도 케이스를 못잡겠는데 내가 로직이 구현이 가능할까 싶어 힌트를 역으로 찾아가기로 했다. 주어진 힌트를 보면, 30+50+40+60+5 라서 185라는 것을 알 수 있다. 하나씩 손으로 그려가며 케이스를 찾아본 결과.. 2022. 2. 10.
[백준] [Python] #2869 달팽이는 올라가고 싶다 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 처음엔 되게 쉬운 문제인줄 알고 문제 그대로 계산만 했다. 하지만 역시 인생 쉽지않았다... 그대로 계산만하니 시간초과가 났다. 1차 시도 import sys sys.stdin = open("input.txt", "r") a, b, v = map(int, input().split()) ans = 1 while(True): v -= a if(v 2021. 11. 13.
[백준] [Python] #1062 가르침 https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 다들 비트마스킹으로 푸는걸 나는 set으로 풀기 시도를 했다. 뭔가 아이디어는 이게 맞는거같은데 주어진 테스트케이스 중 세번째에서 오답이 나와서 때려쳤다... 아래 코드는 때려치기 직전의 오답 코드이다... n, k = map(int, input().split()) if k-5 ans: ans = tmp print(ans) 혹시 몰라 제출도 해봤는데 역시나 였다. 결론은 비트마스킹으로 풀어.. 2021. 9. 25.