본문 바로가기

algorithm51

[SWEA] 4013.특이한 자석 / 시뮬레이션 @시뮬레이션 | 1h 백준 14891.톱니바퀴와 똑같은 문제 어려운 문제는 아니고, 그냥 차근차근 풀어가면 되는 문제다. 인덱스 관리도 약간 있어서 처음에 시뮬 연습하기에 좋은 문제인 듯. 근데 문제 잘못 이해해서, 로직을 잘못 짜서 고치느라 시간이 좀 걸렸다. 문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeV9sKkcoDFAVH SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 구현 방법 이번 문제는 재귀 식으로 만약 3번의 왼쪽이 돌아가면, 그 함수에서 다시 왼쪽을 검사해서 돌리는 식으로 재귀적으로 풀.. 2020. 1. 9.
[SWEA] 5653.줄기세포배양 / BFS, 시뮬레이션 @BFS, 시뮬레이션 약간 난이도 있는 시뮬레이션. 어렵게 생겨서 엄청 쫄았는데 생긴 것 보다는 어렵지 않다. (쉽다는건 아님..) 구현은 1시간 10분정도 걸렸는데 44/50개로 계속 fail 떠서.. 이거 잡는데 한시간 걸렸다ㅠ 엄청 어려운 원리는 아닌데 문제를 꼼꼼히 안읽어서 삽질 많이 했다. 문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRJ8EKe48DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 구현 포인트 1. 세포가 번식해서 퍼져나가기기 때문에 BFS로 구현했다. 2. 큐에는 비활.. 2020. 1. 8.
알고리즘 풀이 내역! 2019년 7월 - 9월알고리즘 첫 시작!이때는 블로그를 안 하고 직접 기록할 때라서 사진으로 첨부합니다 :)풀이 내역 공부 내용10월-12월은 적어 놓은 노트 잃어 버림.. ㅜㅜ   2020년3월중순-5월 사이 누락부분 정리 필요날짜출처번호.문제 이름사용 개념소요시간소감횟수post20/01/04백준1976.여행가자Union-FInd30m생각보다 쉬운 Union-Find 문제   백준1197.최소 스패닝 트리크루스칼, Union-FInd보고함크루스칼 개념을 익히기 위해 보고 풀었음  20/01/05 타당함 못푼이유그래프 원리 이해 못해서 그거 공부했음!  20/01/06백준6118.숨바꼭질다익스트라2h 이상다익스트라 개념을 익히기 위해 보고 풀었음 O 백준1753.최단경로다익스트라보고함다익스트라 개념이 .. 2020. 1. 7.
[백준] 17244.아맞다우산 (java) / BFS, Permutation @시뮬레이션 풀면서 permu + bfs, 완탐 이렇게 돌리면 터지지 않을까 고민하면서 풀었는데 돌려보니 의외로 빨라서 당황. 시간복잡도 계산하는 연습이 조금 더 필요할 듯 하다. 문제 자체는 크게 어렵지 않았는데, 챙겨야 하는 물건이 없을 수 있다는 점을 간과해서 런타임 에러가 떴고, 그걸 잡느라 조금 고생했다. 근데 또 물건이 없을 때에도 시작점과 도착점 사이에 벽이 있을 수 있다는 사실을 간과해서, 또 약간의 삽질을.. 문제 조건을 꼼꼼히 보는 습관을 들여야겠다. Gold 2라고 되어있어서 쫄았는데, 그정도 문제는 아닌 것 같고 bfs 연습하기 좋은 코드인 듯! # 구현 방법 1. 맵을 입력받으면서 물건의 위치를 ArrayList에 저장한다 2. 물건 개수 크기의 배열을 만들어서 nextPermut.. 2020. 1. 7.
백준 6118. 크로스워드 퍼즐 쳐다보기(java) / 시뮬레이션 @시뮬레이션 간단한 시뮬레이션 문제 어려워 보이는데 별로 어렵지는 않다. 단지 풀면서 이게 맞나...? 싶었을 뿐. +그리고 처음에 문제 이해할 때 약간 알쏭달쏭했다. # 구현 방법 1. findStart() - 이중 for문을 돌면서 첫 행 또는 첫 열에서 시작하거나, 이전 문자가 #인 출발점을 찾는다. 이렇게 하면 시작점을 찾을 수 있다. 2. horizenWord(), vertiWord() - 찾은 시작점에서 수직(위->아래), 수평(왼쪽->오른쪽) 방향으로 단어를 찾고, 단어의 길이가 2 이상인 경우에만 리스트에 추가한다. 3. findFirst() - 리스트에 있는 단어들 중에서 사전순으로 가장 앞에있는 단어를 찾는다. 일단 첫 글자부터 비교하고,. 첫 글자가 같은 경우 가장 긴 단어의 길이(2.. 2020. 1. 7.