SSAFY12th / SSAFY_Algorithm

SSAFY 12기 대전 6반 비대면 알고리즘 스터디 레파지토리입니다.
0 stars 7 forks source link

[SWEA] 벽돌 깨기 #141

Open kub938 opened 1 week ago

kub938 commented 1 week ago

문제링크: [모의 SW 역량테스트] 벽돌 깨기

풀이 사항 풀이 일자: 2024.00.00 풀이 시간: 00분 00초 채점 결과: 오답/시간 초과/런타임 에러/정답 예상 문제 유형: 구현/BFS/DFS/DP/자료구조/문자열 등

풀이 방법 (풀이 접근 및 방법에 대한 설명 문제를 풀지 못했다면 어느 곳에서 어려움을 느꼈는지 적어주세요!!)

kub938 commented 1 week ago

풀이 사항 풀이 일자: 2024.09.09 풀이 시간: 3시간 30분 채점 결과: 정답 예상 문제 유형: 구현

풀이 방법

  1. 공 떨구는 순서 중복 순열로 모든 경우의 수 뽑기
  2. 부수는 함수, 부순 후 정리하는 함수, 벽돌 갯수 세는 함수 3개 생각
  3. 부수는 함수 : dxdy 써서 부수다가 1보다 큰수 만나면 그 지점에서 한번더 실행
  4. 다 부수고 정리하고 갯수 센다음 젤 작은거 출력
leafeafeaf commented 1 week ago

***풀이 사항 풀이 일자: 2024.09.09 풀이 시간: 30분 채점 결과: 정답 예상 문제 유형: 중복순열, DFS

***풀이방법

  1. 데이터를 입력받음 던지는 공개수, 가로, 세로 벽돌 위치
  2. 중복 순열로 떨어트릴 위치 구함
  3. 위치에 따라 벽돌 부수는 함수 실행 3.1 공을 떨어트려서 스플래시 계산해서 부숨(DFS) 3.2 부순거에 따라 벽돌 내리기
  4. 남아있는 벽돌 개수 세기 (min)
jongchan0109 commented 1 week ago

풀이 사항

풀이 일자: 2024.09.09 풀이 시간: 1시간 30분 채점 결과: 정답 예상 문제 유형: 구현, 중복순열, BFS

풀이 방법

  1. 중복순열로 몇번째 열에 벽돌을 깰지 정한다.
  2. 벽돌을 깨는데 BFS를 이용한다.
    • 만약 해당 열에 벽돌이 없고, 전체 맵에도 벽돌이 없다면 최솟값을 0으로 하고 리턴
    • 해당 열에 벽돌이 없는 경우는 그냥 return한다.
  3. 0이 아닌 벽돌들을 밑으로 내린다.
  4. 과정이 전부 끝나면 맵을 원상복구 하는데 그냥 deepCopy 메서드를 사용했다.

느낀점

디버깅, 구현의 편의를 위해 중복순열을 다 뽑고, 벽돌을 깼는데, 중복순열을 뽑는 과정에서 벽돌을 깬다면 시간이 단축될 것 같다.

sangholee235 commented 1 week ago

풀이 사항

풀이 일자 : 240827 풀이 시간 : 40 분 채점 결과 : 정답 예상 문제 유형 : 완전탐색 (중복순열) + 구현 시간 : 1,015 ms 메모리 : 86,908 kb

풀이 방법

  1. 공이 어떤 열에 몇개 떨어질지를 중복 순열로 탐색
  2. plans배열에 plans[몇번째 공] = 떨굴 열 로 나눠서 저장
  3. 공의 개수를 채울때마다 구현 되어있는 시뮬레이션에 돌린 후 남은 블럭 개수 갱신
UnrequiredOne commented 6 days ago

풀이 사항

풀이 일자 : 240912 풀이 시간 : 30 분 채점 결과 : 정답 예상 문제 유형 : 완전 탐색(중복순열) + 구현

풀이 방법

  1. Stage를 나눠서 생각했음. (입력 / 가지 수 구하기 / 폭탄 위치 결정 / 폭탄 터지기 / 내리기 /출력)
  2. 폭탄 터지는 함수 bomb에서 연속해서 bomb을 호출해서 Recursive 한계가 올 가능성에 대해 생각했으나, W H가 작아서 괜찮다고 생각함
  3. 내리기는 PuyoPuyo를 풀 때 배웠던 거처럼 queue에 쭉 담아서 쭉 펼치는 방식으로 했음