본문 바로가기

반응형

알고리즘

(104)
[BOJ] 3649 로봇 프로젝트 로봇 프로젝트클릭시 이동합니다. 어떻게 풀까? 정렬 문제라고는 되있지만, 저는 다르게 풀었습니다. 왜냐하면! 답이 10^8을 넘지 않기 때문에, bool 배열을 충분히 만들 수 있기 때문이죠! 구멍의 크기는 입니다.nm = 즉, nm = 이라는 것이죠! 구멍을 막기 위해서 필요한 두 블록 중 하나가 l이라고 한다면, 필요한 나머지 하나의 블록은 x - l 일 것입니다!따라서, 입력을 받을 때 x-l의 블럭이 존재한다면, 구멍을 막을 수 있다는 것이겠죠! 하지만, 문제에 또 다른 조건이 있습니다. 바로 절대값이 가장 큰 수를 출력해야 한다는 것이죠! 절대값이 크기 위해서는 두 수의 차이가 가장 커야하고, 작은 수를 기준으로 보면, 가장 작은 길이 l과, x - l 의 값이 정답으로 출력하면 됩니다. l을 ..
[SW Expert Academy] 3347. 올림픽 종목 투표 3347. 올림픽 종목 투표 SW Expert Academy의 글은 무단 복제가 금지되어 있기 때문에 링크로 대체하겠습니다.클릭시 이동합니다. 어떻게 풀까? 일단, 올림픽 종목 개최 비용에 대한 배열을 선언하고,조직 위원회의 상한 비용에 대한 정보를 저장하는 배열을 선언합니다. 그리고, 올림픽 종목을 앞에서부터 살펴가면서, 조직 위원회의 상한 비용보다 작은 올림픽 종목이 나온다면 해당 종목에 투표합니다! 그리고 마지막에 이 투표수가 가장 많은 올림픽 종목을 출력합니다..!세상에...! 코드 1234567891011121314151617181920212223242526272829303132333435363738394041#include#include int A[2][1001];int B[1001], n, ..
[SW Expert Academy] 2382. 미생물 격리 2382. [모의 SW 역량테스트] 미생물 격리 삼성 SW Expert Academy의 문제들은 저작권이 걸려있기 때문에 링크로 대체하겠습니다!클릭시 이동합니다! 어떻게 풀까? 시뮬레이션 문제입니다.문제가 요구하는 사항을 구현하는 것이 가장 주가됩니다! 풀기 위해 생각해봐야 할 것이 몇 군 데 있습니다. 1. 시간에 따른 미생물의 이동 (가장 기본)- 각 미생물 군집에 따라 미생물들의 수와 이동 방향이 주어집니다.- 미생물들은 매 시간마다 자신의 이동 방향으로 한 칸 이동합니다. 2. 끝에 닿았을 경우의 처리- 이동하는 방향을 반대로 해야한다.- 미생물의 수가 절반으로 줄어야한다.단, 미생물의 수가 홀 수 였다면, 소수점 이하를 버린다.미생물 수가 0이 되면 군집이 사라진다. 3. 여러 미생물이 만났을 ..
[SW Expert Academy] Code Battle! 이번주의 즐거운 코드 배틀도 끝났습니다. 터널 문제가 생각 외로 D5였네요! (어쩐지 계속 틀리더라니..)어쨌든, 오늘도 코드배틀 풀이를 시작하겠습니다! SW Expert Academy의 문제들은 저작권 문제 때문에 링크로 대체하겠습니다.문제 제목 클릭시 이동합니다. 5356. 의석이의 세로로 말해요 어떻게 풀까?? 세로로 출력하는 문제이군요! 딱 제한되는 조건은 하나입니다.'왼쪽 위부터 아래로 출력하지만, 출력하고자 하는 글자가 없다면 무시하고 계속 진행한다.' 이것만 처리해서 구현하면 되겠군요! 행 마다 글자의 가로 글자의 개수를 저장하고,만약, 해당 행에 해당하는 글자의 열의 위치를 출력하고자 할 때, 해당 행의 가로 글자가 열의 크기보다 작으면, 무시하고 다음 행을 진행하는 방식으로 구현하면 됩니..
[BOJ] 14923. 미로탈출 미로 탈출클릭시 이동합니다. 어떻게 풀까? BFS 문제입니다!해당 캐릭터의 이동 시간은 1이기 때문에, BFS에서 해당 도착점에 도착했을 때가 처음으로 나오는 시간이 바로 해당 지점에 도착할 수 있는 최소 시간입니다! 그리고, 만약 캐릭터가 이동하고자 하는 방향이 이전에 한 번 이동했던 방향이라면 다시 방문할 필요가 없죠.그 말은 가고자 하는 방향을 한번 돌아서 간다는 것이기 때문입니다! 최소 시간과는 거리가 멀어지죠. 따라서, 해당 맵에 들어갔던 최소 시간을 check[y][x]에 표시합시다! 다만, 이 문제는 탈출을 하는데 조건이 하나가 더 있습니다!바로, 마법을 쓸 수 있다는 것이지요.이 마법의 유무가 최소를 만들 수 있는 또 다른 변수가 될 수 있습니다. 왜냐하면, 조금 늦게 왔더라도, 마법이 있..
[BOJ] 14226. 이모티콘 이모티콘클릭시 이동합니다. 어떻게 풀까? 우선, 한 상태에서 달라질 수 있는 것들은 총 3개 이죠. 1. 현재 화면에 있는 이모티콘 수2. 클립보드에 저장된 이모티콘의 수3. 시간 특히, 시간 같은 경우는 모든 연산에서 1초로 동일합니다.따라서, bfs를 이용해서 딱 현재 화면에 있는 이모티콘의 수가 처음으로 나온다면, 그것이 바로 해당 화면에 이모티콘을 만들 수 있는 최소의 시간인 것이죠. 그럼, 만약 큐에서 상태를 뽑았는데, 이미 이전에 화면에 있는 이모티콘의 수와 클립보드에 저장된 이모티콘의 수가 같은 상태를 봤었다면 어떨까요?? 어짜피 똑같은 처리를 다시 한 뒤에 똑같은 상태가 큐에 저장되기 때문에 다시 볼 필요가 없습니다!! 따라서, 이전에 처리한 상태를 저장하기 위해서 visit은 [화면에 있..
[BOJ] 13901. 로봇 로봇클릭시 이동합니다. 어떻게 풀까? 우선, 처음에 방향이 4개가 주어집니다.그리고 4개의 방향에서 나아가지 못하면, 현재의 위치를 출력해야하죠! 따라서, 저는 4개의 방향을 살펴보면서 4개의 방향으로 가지 못하면 cont라는 bool 변수를 false로 만들어서 while문을 빠져나오게 했습니다!한 번이라도 움직이면, 해당 방향으로 움직이기 때문에 계속 루프를 돌겠죠.그리고, 움직인 방향에는 벽을 설치해서 다시 돌아올수 없게 했습니다. 또 중요하게 생각해볼 점은 1. '만약 움직이면 계속 같은 방향으로 움직인다.' 라는 점과2. '만약, 사용자가 지정한 다음 방향이 없다면 맨 처음 방향으로 돌아간다.' 라는 점이겠죠. 1번 같은 경우는, 자신의 현재 방향을 변수로 가지고 있으면 쉽게 해결됩니다!2번의 ..
[BOJ] 1019. 책 페이지 책 페이지클릭시 이동합니다. 어떻게 풀까? 규칙을 찾으면 생각보다 간단하게 풀 수 있습니다! 간단하게 2834 라는 수를 생각해봅시다! 우선, 가장 큰 2천이라는 수를 봅시다 2천이라는 수 전에는0~999라는 수가 있었을 것입니다.그리고 1000~1999까지의 수가 있었겠죠!엇! 이거.. 왠지 0~999까지가 반복되는 느낌이 있습니다. 그렇다면, 0~999까지 등장하는 0~9의 수를 세면 될 것 같습니다.편의상 1도 001이라고 생각하겠습니다! (1001 같은 경우 때문이죠!)잘 생각해보면, 모든 수가 1의 자리에서 100번, 10의 자리에서 100번, 100의 자리에서 100번씩 등장하는 것을 알 수 있습니다! (즉, 0도 300번, 1도 300번, 2도 300번, 3도 300번, 4도 300번, 5도..

반응형