코딩/알고리즘
-
[백준][ 자바 ][ 15683 ] 감시코딩/알고리즘 2019. 3. 23. 22:09
하... dfs엔 약해서 좀 오래걸린문제다른 사람들 코드를 보고 참조해도이 문제는 뭔가 까탈스러운게 많아서 힘들었다.완전탐색을 하라고 문제에서 거의 알려주다싶히 하는데처음엔 당최 어떻게 할지 감이 안왔다. 모든 가짓수를 다 알아야하는데각 cctv마다 보는 방향이 달라서 일일히 구현해줘야한다( 이게 엄청 귀찮았음 )그리고 모든 경우를 탐색해보면 된다.. 완전탐색 간단한 문제부터 다시 풀어봐야할것같다,ㅠpackage back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import ja..
-
[ 백준 ][ 자바 ][ 14500] 테트로미노코딩/알고리즘 2019. 3. 17. 00:29
문제가 굉장히 까다로울 것 같은 문제였다나는 와 설마 이거 생김새대로 회전이랑 대칭을 구현하고 해야하나란 생각에 잠겼다...그런데 다른 사람들 보니 dfs로 4 depth까지만 진행하면 된다고 했다.하나하나 그려보니...정말 그렇더라어...엄청 간단한 문제였네...?그런데 그냥 bfs로 움직이면 될듯 싶어서 bfs로 진행했는데시간초과가..걸렸다visited 배열을 만드는 과정이 분명 문제 같은데...음 방법이 딱히 생각나지않았다... 익숙치않는 dfs로 한번 짜봤다. 확실하게 dfs가 콤팩트하긴 한거같다. [ㅗ] 모양은 하나하나 돌려가며 비교했다.후 성공~집에 가즈아.ㅜimport java.io.BufferedReader; import java.io.IOException; import java.io.In..
-
[ 백준 ][ 자바 ][ 12100 ] 2048(EASY)코딩/알고리즘 2019. 3. 10. 23:27
이런 저런 삽질을 많이 겪은 문제완벽하게 풀수 있다고 자신은 못하겠다끙끙대다가 다른 사람들의 풀이를 보고 맞춘 문제인데 이 문제의 중요한점은 2048의 합쳐짐의 룰을 완벽하게 이해만 하면 된다 merge 함수가 제일 핵심 로직이다원래는 합치고 이동시키고 두개의 함수로 짯었는데 계속 실패하고...(주륵)다른 사람들 풀이중 0이 아닌것들을 큐에 넣고 하는게 효율적이란 말을 듣고 그렇게 짜보았다. 실전에서 이런 생각을 할 수 있어야할텐데...대단...여튼 상하 좌우를 이동하고 병합할수 있는 로직이 마련되면dfs로 모든 방향을 탐색하면 된다dfs가 익숙하지 않아서 맵을 copy 하는게 이해가 안됬었는데번뜩 이전 상태를 기억을 해야한다는 게 생각낫다. merge를 진행하면서 전역 배열인 MAP이 변하는데분기에서 ..
-
[ 백준 ][ 자바 ][ 7576 ] 토마토코딩/알고리즘 2019. 3. 8. 20:14
토마토 문제 어제 풀었던 문제의 2차원 버전이였다이문제는 대각선 까지인가 싶었는데 아니었다.일반적인 bfs문제였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; class tomatoPoint{ int x; int y; tomatoPoint(int y, int x ){ this.y = y; this.x = x; } } /* * 6 4 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 */ pu..
-
[ 백준 ][ 자바 ][ 7569 ]토마토코딩/알고리즘 2019. 3. 7. 23:46
와....다 풀어놓고서 진짜 엄청난 삽질만 헀다....코드 위치를 잘못해놓고 3차원 배열이라는 약간의 특수성떄문에생각 못하고 계속 디버깅하면서말도 안돼만 100번 하던 찰나에...발견했다...와...ㅋㅋㅋ내시간..ㅠㅠㅠㅠㅠㅠ굉장히 당혹스럽다,...음 이문제는 3차원 배열이란 거 의외엔 다른 bfs랑 똑같이 풀면 된다상하좌우 그리고 위,아래라는 것만 생각하면 된다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; //5 3 1 //0 -1..
-
[ 백준 ][ 자바 ][ 2206 ] 벽 부수고 이동하기코딩/알고리즘 2019. 3. 7. 20:38
음... 이문제는 약간 헷갈리는 문제였다저번에 풀다가 못풀어서 다시 도전한 문젠대자꾸 틀려서 다른 분들의 코드를 참고해서 다시 짯다 중요한 점은 벽을 부수냐 안부수냐 여기서 갈라지는데벽을 부셨을떄 안부셨을떄를 각각 따져줘야한다그리고 단 한번만 벽을 부실수 있어야한다는 것이 중요한점이다. 벽 이었을때 벽이 아니였을때를 구분 짓는데3차원 배열을 활용해서 벽을 부수었는지 안 부수었는지를 구별해준다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokeniz..
-
[ 백준 ][ java ][ 불! ][ 4179 ]코딩/알고리즘 2019. 3. 2. 21:40
음...불이 두개가 있길래 하나는 뭔가했는데 똑같은 문제인거같다. 이런 동시 다발? 성 문제를 풀자니 약간 헷갈리는데 다른 분 말을 빌리자면 상식적으로 생각하면됩니다.라는데...딱 맞는 말같다.일단 불이랑 같은 시간대에 움직인다면 번진곳으론 이동 못 한다고 생각하면된다즉 불을 먼저 이동 시키면 된다. 또 이 문제에서 중요한것은 외곽에 있으면 바로 탈출하는게 아니라 다 빠져 나가는 시간까지 포함하는것이다나는 시간을 맨 처음에 1로 세팅하는 것으로 해놓고 외곽도착시 끝나는 것으로 했다또 간과한 예외가 있었는데만약 맨 처음에 바로 외곽에 있을 경우를 생각 못했는데함수 첫번째에 분기점을 넣는 방식으로 해결했다좀 더티한 해결방식이지만.....혹시 이걸 보시는 분들은 이 코드를 너무 맹신하지마시길.. import ..
-
[2018 윈터코딩][ python ] 스킬트리코딩/알고리즘 2019. 3. 2. 00:14
광고를 무심히 눌렀다가 잠깐 접하게 된문제갑자기 파이썬을 해보고 싶어서 잠깐 풀었다올만에 하는거라 기억이 잘 안나서 꾸역꾸역했다나는 스킬트리 순서를 딕셔너리에 기억한후에그다음에 주어진 스킬에 대해서도 딕셔너리에 넘버링한후에그 둘을 비교하는 방식으로 했다 그렇게 효율적인 코딩은 아닌듯 싶기도하고...다른사람들 풀이를 보니 ㅎㄷㄷ하다나만 이렇게 길게 짠거같다...주륵..한참 멀은거 같다.ㅠdef solution(skill, skill_trees): answer = 0 skillSeqDic= {} seq = 1 for s in list(skill): skillSeqDic[s] = seq seq += 1 for skill in skill_trees: isPossible = True skillDic = {} se..