본문 바로가기
728x90

BAEKJOON41

[BOJ/Python] 20055.컨베이어 벨트 위의 로봇 📌 문제 https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 📌 문제 접근 방법 문제에서 제시한 방법대로 구현을 하는 거라 어렵진 않았는데, 문제가 헷갈리게 써있었다..😥 우선 컨베이어 벨트 위에 맨 처음에는 로봇이 하나도 올려져있지 않은 상태이고, 1에서 4까지 모두 수행한 사이클이 1단계임을 숙지하고 구현해보자! 테스트 케이스 3번과 4번에서 자꾸 틀렸었는데, 질문 게시판을 보니 '가장 먼저 벨트에 올라간 로봇부터' 라는 .. 2022. 2. 27.
[BOJ/Python] 2096. 내려가기 📌 문제 https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 📌 문제 접근 방법 처음엔 dfs를 사용해서 최소값, 최대값을 갱신시켰는데 숫자가 많아질수록 모든 숫자를 저장하는 자체에서 메모리 초과가 발생하는 것 같았다. 따라서 입력 숫자를 저장하지 않고 입력받자마자 바로 사용할 수 있도록 dp를 사용해서 구현했다. 아래줄의 입장에서 0번째 숫자는 윗줄의 0, 1번째 숫자를 더할 수 있고, 1번째 숫자는 윗줄의 모든 숫자, 2번째 숫자는 윗줄의 1, 2번째 숫자를.. 2021. 12. 8.
[BOJ/Python] 14888. 연산자 끼워넣기 📌 문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 📌 문제 접근 방법 연산자를 입력된 개수만큼 리스트에 넣은 후 순열을 만들어줬다. 똑같은 연산자가 2번 이상 들어갈 경우, 중복될 수 있으므로 set을 사용해서 중복을 제거해줬다. 숫자와 연산자를 순회하면서 앞에서부터 계산한 값을 results에 append 해줬다. results에서 최대값과 최소값을 출력했다. 📌 코드 from i.. 2021. 12. 2.
[BOJ/Python] 5052. 전화번호 목록 📌 문제 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 📌 문제 접근 방법 처음에는 입력 받은 번호를 정렬시키고 하나씩 비교하면서 다른 숫자를 찾았다. 될 줄 알았는데 n이 10000까지 입력가능하니까 최악의 경우엔 1초를 넘긴다. 그래서 코드를 갈아엎었다! 인덱스를 초기에 0으로 설정해놓고 모든 문자열을 순회하면서 해당 인덱스의 값을 key로, 해당 문자열을 value로 해서 temp에 넣는다. temp의 value중.. 2021. 10. 30.
728x90