구현

문제https://www.acmicpc.net/problem/20291 여담문제를 풀고난 뒤, 코드가 깔끔하지 않은 것 같아 다른 풀이들을 참고했다. 해당 블로그에서 엄청 깔끔하게 코드를 짰길래 참고해서 다시 풀었다. 항상 깔끔하게 풀지 못하는 것 같아 조금 아쉽다.. 좀 깔끔하게 푸는 습관을 들이도록 해야지!  풀이확장명을 구하기 위해 입력받은 문자열을 .로 split()한다. split()한 결과의 첫 번째 문자열은 파일명, 두 번째는 확장명일 것이다. 따라서 필요한 두 번째 문자열만 사용하면 된다. 그 후 과정은 다음과 같다.HashMap을 사용해서 입력받은 파일의 확장명이 존재하는지 확인한다.hashMap.containsKey(file)확장명이 존재하는 경우라면, 파일의 수를 1 증가하여 Hash..
문제https://www.acmicpc.net/problem/12933 여담문제를 풀고 난 뒤, 종료 조건을 체크하는 부분이 조금 아쉬워서 다른 풀이들을 참고했다. 해당 블로그의 글을 읽고 아이디어가 떠올라서 새로 풀었다. 처음에는 울음소리를 확인할 때, 확인한 울음 소리들을 리스트에 저장하고 올바른 울음소리일 때만 방문 처리를 했었다. 이는 문제를 제대로 이해하지 못하고 풀었기 때문에 정석?으로 푸는 방법이 아니었다. 예제 6번을 뒤늦게 보고 문제를 잘못 이해했다는 것을 알게 되었다. "제대로 울지 않는 오리가 있어도 제대로 우는 오리의 수만 구하면 된다"라고 생각했는데, 제대로 울지 않는 오리가 하나라도 있으면 녹음한 소리가 올바르지 않은 것이었다..ㅎㅎ 문제를 처음부터 잘 이해했더라면 최적화된 방법..
문제https://www.acmicpc.net/problem/1913 여담처음에 DFS 방식으로 문제를 풀었다. 메모리를 너무 많이 사용하길래 이 방식이 맞나싶어서 다른 풀이를 봤더니 그냥 순수 구현으로 풀 수 있는 문제였다..  순수 구현으로 푼 문제와 DFS 탐색을 통해 푼 문제의 메모리 차이가.. ㅎㅎ 풀이이 문제는 "안 → 밖" 또는 "밖 → 안"의 순서대로 하나씩 칸을 채워나가면 된다. 나는 밖에서 안으로 채우는 방식을 사용했다. 다음 사진에서 알 수 있듯이 "아래 → 오른쪽 → 위 → 왼쪽" 방향이 반복된다. 따라서 (0, 0)에서 시작해서 한 방향으로 이동하다가, 다음에 이동할 지점이 범위를 벗어나거나 이미 값이 기록된 곳이라면 방향을 변경하면 된다. 범위를 벗어난 경우x + dx[i] = ..
문제https://www.acmicpc.net/problem/20436 여담"왼손과 오른손의 처음 위치 = 문자열에서 처음으로 나오는 문자의 위치"라고 생각했다.. 문제를 제출했는데 틀렸길래 왜 틀렸나 싶어 살펴보니 입력받은 처음 위치를 사용하지 않았다는 것을 알게 되었다. 문제를 읽으니 아예 착각했다는 알게 되었다. 이런 실수 너무 아깝다 진짜.. 풀이이 문제는 문제 조건에 맞게 단순하게 구현을 하면 되는 문제이다.  우선 키보드의 자판을 한글 자음/모음으로 구분해서 아래와 같이 좌표와 함께 저장한다. HashMap left = new HashMap()left.put("q", new Pos(1, 1)) 그 후, 문자열을 입력받아서 각 문자열이 왼손으로 쳐야하는 경우인지 오른손으로 쳐야하는 경우인지만 구..
hjin28
'구현' 태그의 글 목록 (2 Page)