https://www.acmicpc.net/problem/2608문제보통 큰 숫자를 왼쪽에 작은 숫자를 오른쪽에 쓴다. 그리고 그 값은 모든 숫자의 값을 더한 값이 된다. 예를 들어 LX = 50 + 10 = 60 이 되고, MLI = 1000 + 50 + 1 = 1051 이 된다.V, L, D는 한 번만 사용할 수 있고 I, X, C, M은 연속해서 세 번까지만 사용할 수 있다. 예를 들어 VV나 LXIIII 와 같은 수는 없다. 그리고 같은 숫자가 반복되면 그 값은 모든 숫자의 값을 더한 값이 된다. 예를 들어 XXX = 10 + 10 + 10 = 30 이 되고, CCLIII = 100 + 100 + 50 + 1 + 1 + 1 = 253 이 된다.작은 숫자가 큰 숫자의 왼쪽에 오는 경우는 다음과 같다..
https://www.acmicpc.net/problem/14503구현 문제다. 조건이 엄청 많은건 아니었지만, 그래도 조건 정리 제대로 안하면 뱅글뱅글 돌아갈수있는 문제다 풀이 과정1~N- 문제 정의로봇 청소기, 방의 상태 -> 청소하는 영역의 개수 구하는 프로그램방 : n*m0 : 위 - 북 (-1,0)1 : 우 - 동 (0,1)2 : 하 - 남 (1,0)3 : 좌 - 서 (0,-1)(r,c)00 01 0210 11 1220 21 221. 현재 칸이 아직 청소되지 않은 경우, 현재 칸을 청소한다. : ans++2. 현재 칸의 주변 $4$칸 중 청소되지 않은 빈 칸이 없는 경우, : 모두다isVisited == true 인 경우 | 하나라도 false가 아니면 1. 바라보는 방향을 유지한 채로 ..
2025.03.29 - [백준이당] - [C++] 백준 18111번 : 마인크래프트 [C++] 백준 18111번 : 마인크래프트https://www.acmicpc.net/problem/18111하... 이 문제도 한 달 전에 푼 문제지만 다시 푸니까 또 틀렸다.기억이 나는 문제인게, 처음 푼 당시에는 아이디어가 떠오르지 않아 답지를 봤었다..ㅜ뭐 이번엔 아이2hiidevdang.tistory.com 2025.03.30 - [백준이당] - [C++] 백준 1515번 : 수 이어쓰기 [C++] 백준 1515번 : 수 이어쓰기https://www.acmicpc.net/problem/1515 문제를 잘 읽자 ㅎㅋㅎㅋ 처음 틀린건 문제 내에서첫째 줄에 지우고 남은 수를 한 줄로 이어 붙인 수가 주어진다. 이 수..
https://www.acmicpc.net/problem/2615 오목..이 문제 XY Problem에 갇혔었다. 다른 방식으로 해결할 수 있었지만, 지금 내 방식으로 너무너무 해결해보고 싶어서 오래걸렸다....1. 문제 분석오목19 * 19 바둑판- 연속 다섯알 -> 승리- 연속 : 가로, 세로, 대각선 모두 뜻함- 6목은 인정 안 함입력검정 : 1, 흰 : 2, 없음 : 0출력이긴돌이긴 라인의 가장 왼쪽에 있는 바둑돌 (연속된 다섯 개가 세로인 경우 : 가장 위에 있는 거) -> 가장 좌측 상단에 있는 바둑돌을 출력---1. 먼저 바둑판을 순회 (좌 -> 우 && 상 -> 하 방향)2. 만약 1 또는 2를 만나? (현재 바둑돌이 무엇인지 저장햐야 함. : currRock) 2.1. 현재의 위치..
https://www.acmicpc.net/problem/5430 이 문제도 과거 여러번 틀려 골머리를 앓았던 문제다심지어 java로 풀었었었었다...ㄷㄷㄷㄷㄷ 다행이도 이번엔 한방에 맞았다그래도 1년동안 성장은 했나보다 ㅎㅎㅎ 문제를 다시 접하니 그냥 적절한 자료구조를 가지고 조금만 조물딱하면 되는 문제였기 때문에,풀이과정도 딱히 쓸 것이 없었다. 따라서 그냥 정답 코드만 쓸거다. 아, 주의할 점이 cpp의 경우 문자열 다루는 게 조금 귀찮다.이번 기회에 또 여러 레퍼런스를 찾아보며 공부할 수 있어서 매우 좋았다.뭐.. 공부란게 안하면 자꾸 까먹어서, 암튼 이렇게라도 다시 접할 수 있다는게 좋았다 #include using namespace std;deque split(string str, char ..
https://www.acmicpc.net/problem/1515 문제를 잘 읽자 ㅎㅋㅎㅋ 처음 틀린건 문제 내에서첫째 줄에 지우고 남은 수를 한 줄로 이어 붙인 수가 주어진다. 이 수는 최대 3,000자리다. 라는 조건을 보고 문제해석을 잘못했기 때문이다. 투포인터 비슷하게 풀었다.두개의 수를 비교하면서 최소 N값을 구하기 위한 반복문을 돌리는 것이 핵심이었다. #include using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); string str; cin >> str; int turn = 0; // 입력받은 문자열에서 비교할 위치를 가리키는 포인터 for (int i = ..
https://www.acmicpc.net/problem/18111하... 이 문제도 한 달 전에 푼 문제지만 다시 푸니까 또 틀렸다.기억이 나는 문제인게, 처음 푼 당시에는 아이디어가 떠오르지 않아 답지를 봤었다..ㅜ뭐 이번엔 아이디어는 떠올랐지만, 좀 푸는데 오래걸렸다....ㅜㅜ1. 문제 정의마인크래프트- 1 * 1 * 1 크기의 블록들로 이뤄진 3차원 세계에서 - 집터 : N(세로) * M(가로)- 왼쪽 위의 좌표 : (0,0)- 집터 내의 땅의 높이를 일정하게1. (i, j)의 가장 위에 있는 블록을 제거해 인벤토리에 넣기 : 2초2. 인벤토리에서 블록 하나를 꺼내어 좌표 (i, j)의 가장 위에 있는 블록 위에 놓기 : 1초- 집터 아래에 빈 공간 없음- 인벤토리에서만 블록을 가져올 수 있음- ..
이 문제는 해석하기가 빡세다..ㅜ 아래의 글에서 문제를 잘 해석해주셨다https://www.acmicpc.net/board/view/154341참고하고 하나씩 풀면,,엄청난 장고의 시간을 거쳐풀었다......넘넘.. (내기준)빡구현이었다....1. 컨베이어 벨트 이동2. 로봇 이동3. 시작 위치에 로봇 추가 이 세 가지의 절차를 거쳐 풀면 된다. 1. 컨베이어 벨트 이동벨트 이동은, start, endPos 두 개의 변수를 조정하며 상대적으로 이동한 것처럼 활용할 수 있도록 했다.// 1. 컨베이어 벨트 이동 start = (start - 1 + (2 * n)) % (2 * n); // n이 3이면 start는 0 -> 5 int endPos = (start + n - 1) % (2 * n); // 내..