"> 문제문제 설명N×M 크기의 배열로 표현되는 미로가 있습니다.예시:1 0 1 1 1 11 0 1 0 1 01 0 1 0 1 11 1 1 0 1 1미로에서 '1'은 이동할 수 있는 칸을 나타내고, '0'은 이동할 수 없는 칸을 나타냅니다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하세요. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있습니다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함합니다.입력첫째 줄에 두 정수 N, M (2 ≤ N, M ≤ 100)이 주어집니다. 다음 N개의 줄에는 M개의 정수로 미로가 주어집니다. 각각의 수들은 붙어서 입력으로 주어집니다.출력첫째 줄에 지나야 하는 ..

https://www.acmicpc.net/problem/1309 풀면서 어려웠던 점1. DP 테이블을 만들면서 사자를 한마리도 배치하지 않는 경우를 생각해내기 힘들었다.2. 메모리 초과 DP 테이블에서 한마리도 배치않는 경우 0, 1에 배치할 경우 1, 2에 배치할 경우 2로 정한 후에 풀게되면 수월하게 풀 수 있었다.그리고 int 형은 4Byte라 문제가 없어보이는데 왜 메모리 초과가 발생하는지에 대해 의문이다. 혹시라도 지나가다가 명확히 아시는 분이 있으면 댓글을 부탁드립니다. ㅜ.ㅜ N이 100,000이 최대이니까 300,000 개의 int가 있고 이는 1,200,000 byte이고 1.2M 정도 밖에 안되지만 무슨 이유일까... 아무튼 dp를 계산해줄 때 9901을 나눈 나머지를 사용하면 된다..
문제를 풀었지만 정말 복잡하게 풀었다... 그리고 메모리 초과가 나서 코드를 살펴보니 del의 경우 O(N)이기 떄문에 for 문과 함께 전체적으로 O(N^2) 이기 때문에 효율적이지 못한 코드이다. 요새 코딩테스트를 보면서 메모리 효율적으로 사용해야하는 코드가 필요하다는 것을 절실히 느낀다.import syss = list(sys.stdin.readline())n = int(sys.stdin.readline())c_idx = len(s)for _ in range(n): input_ = list(map(str, sys.stdin.readline().split())) if input_[0] == "L": # 왼쪽 if c_idx == 0: # 커서가 맨 왼쪽에 있다면 ..
- Total
- Today
- Yesterday
- 자료구조
- FastAPI
- 리눅스
- 백준
- 정보보안
- java
- LangChain
- Python
- 딥러닝
- 다이나믹프로그래밍
- 프로그래머스
- 분산시스템
- synflooding
- 보안기사
- t-test
- 파이썬
- springboot
- linux
- Ai
- llm
- lightsail
- 카카오페이
- 코딩테스트
- 정보보안기사
- 시간초과
- 보안
- 우선순위큐
- 그리디
- t검정
- 카카오페이면접후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |