본문 바로가기

반응형

전체 글

(171)
[SW Expert Academy] 2382. 미생물 격리 2382. [모의 SW 역량테스트] 미생물 격리 삼성 SW Expert Academy의 문제들은 저작권이 걸려있기 때문에 링크로 대체하겠습니다!클릭시 이동합니다! 어떻게 풀까? 시뮬레이션 문제입니다.문제가 요구하는 사항을 구현하는 것이 가장 주가됩니다! 풀기 위해 생각해봐야 할 것이 몇 군 데 있습니다. 1. 시간에 따른 미생물의 이동 (가장 기본)- 각 미생물 군집에 따라 미생물들의 수와 이동 방향이 주어집니다.- 미생물들은 매 시간마다 자신의 이동 방향으로 한 칸 이동합니다. 2. 끝에 닿았을 경우의 처리- 이동하는 방향을 반대로 해야한다.- 미생물의 수가 절반으로 줄어야한다.단, 미생물의 수가 홀 수 였다면, 소수점 이하를 버린다.미생물 수가 0이 되면 군집이 사라진다. 3. 여러 미생물이 만났을 ..
[SW Expert Academy] Code Battle! 이번주의 즐거운 코드 배틀도 끝났습니다. 터널 문제가 생각 외로 D5였네요! (어쩐지 계속 틀리더라니..)어쨌든, 오늘도 코드배틀 풀이를 시작하겠습니다! SW Expert Academy의 문제들은 저작권 문제 때문에 링크로 대체하겠습니다.문제 제목 클릭시 이동합니다. 5356. 의석이의 세로로 말해요 어떻게 풀까?? 세로로 출력하는 문제이군요! 딱 제한되는 조건은 하나입니다.'왼쪽 위부터 아래로 출력하지만, 출력하고자 하는 글자가 없다면 무시하고 계속 진행한다.' 이것만 처리해서 구현하면 되겠군요! 행 마다 글자의 가로 글자의 개수를 저장하고,만약, 해당 행에 해당하는 글자의 열의 위치를 출력하고자 할 때, 해당 행의 가로 글자가 열의 크기보다 작으면, 무시하고 다음 행을 진행하는 방식으로 구현하면 됩니..
[BOJ] 1219. 오민식의 고민 (18.8.22 그림 추가) 오민식의 고민클릭시 이동합니다. 어떻게 풀까? 으악... 저는 dfs와 bfs를 이용해서 풀었는데... 알고보니 벨만-포드 알고리즘이었어요.. 이따가 벨만-포드로 풀어서 해당 방법도 업데이트 하겠습니다. 버전 1과 2로 나누죠! Version.1 DFS and BFS 노드가 100개밖에 없으니 DFS를 이용해서 최댓값을 구해봅시다.잘 생각해보면, 해당 문제에서 양수 사이클이 생겨서 무한이 생기는 경우는, 방문했던 점을 또 방문할 경우에만 생깁니다.더 정확하게 말하면, 양수 사이클이 생겼을 경우이죠. 반대로, 음수 사이클이 생기는 경우에는 싸이클의 반복 경로를 탄다면, 가격이 계속 줄어든다는 것을 알 수 있죠!결국, 음수 사이클이 생기는 경우에는 반복 경로를 타지 않고 가는 것이 최대 수익을 얻는 경우입니..
[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도..
[SW Expert Academy] Code Battle! 매주 화요일에 열리는 코드 배틀!오늘도 참여했습니다.언제나처럼 2 문제를 풀었습니다. 핫핫 SW Expert Academy의 문제는 무단 복제가 금지되어 있기 때문에 링크로 대체합니다!클릭시 이동합니다!! No. 1 이진 문자열 복원 어떻게 풀까? 해당 문제는 00, 01, 10, 11의 개수가 주어졌을 때, 만들 수 있는 이진 문자열을 아무거나 출력하면 됩니다!두 문자 00, 01, 10, 11을 1번 문자, 2번 문자, 3번 문자, 4번 문자라고 하겠습니다! 문자열을 이어보면, 이진 문자열의 끝에 따라서 다음에 몇 번 문자가 오는지 알 수 있습니다. 그림에서 보듯이, 문자의 끝이 1이라면 뒤에 10 혹은 11이 와야합니다!문자의 끝이 0이라면, 00, 01 문자가 와야합니다. 또한, 1번, 2번, 3..

반응형