arr.sort() 로 문자열 정렬하기 : 정렬할 때 요소를 문자열로 취급한다. var arr = ["a", "c", "d", "e", "b"]; arr.sort(); console.log(arr); // ["a", "b", "c", "d", "e"] arr.sort() 로 숫자 오름차순 정렬하기 sort() 함수의 파라미터로 함수를 정의한다. 이 함수는 a, b 두 개의 파라미터를 입력받고, a > b이면 1, a == b이면 0, a b) return 1; if (a===b) return 0; if (a a-b); arr.sort() 로 숫자 오..
문제요약 나의 코드 및 설명 아스키코드를 활용하여 직접 구현하다가 실패했다.. 문제의 테스트케이스와 내가 추가한 테스트케이스는 통과하지만, 히든 테스트케이스는 계속 실패했다. function solution(strings, n) { var answer = []; for (var s of strings){ var flag = false; if (answer.length == 0){ //아직 answer이 비어있을 때, answer.push(s); } else { //answer에 어떠한 문자열이 있을 때 for (var i = answer.length-1 ; i > -1 ; i--){ if (answer[i][n].codePointAt() > s[n].codePointAt()){ if (i == 0){ a..
문제요약 나의 코드 및 설명 - DFS 활용 DFS를 활용하여 문제를 해결하였다. def dfs(depth, temp): global a,b if temp >= b: if temp == b: result.append(depth) return dfs(depth+1, temp*2) dfs(depth+1, int("".join(map(str, (list(map(int, str(temp)))+[1]))))) a, b = map(int, input().split()) result = [] dfs(0,a) if result: print(min(result)+1) else: print(-1) 다른 코드 및 설명 - BFS 활용 BFS를 활용하여 문제를 해결하였다. 큐에 다음 숫자와 연산의 개수를 추가한다. from ..
문제요약 나의 코드 및 설명 bfs() : 아기 상어의 위치로부터 이동할 수 있는 칸의 거리를 v 테이블에 저장 find() : v 테이블에 저장된 숫자가 가장 작은 칸이 아기 상어로부터 가장 가까운 거리의 칸이므로, 가장 가까운 거리의 물고기를 구하는 함수 먹을 수 있는 물고기가 없을 때까지 두 함수를 반복한다. from collections import deque #아기 상어의 위치에서부터 이동할 수 있는 칸의 거리를 v 테이블에 저장 def bfs(sx,sy,size): queue = deque() queue.append((sx,sy)) v[sy][sx] = 0 board[sy][sx] = 0 while queue: x,y = queue.popleft() for i in range(4): nx = ..
문제요약 나의 코드 및 설명 나는 컨베이어 벨트와, 로봇 위치가 회전하는 것을 직접 구현하였다. #컨베이어, 로봇 위치 회전 def rotate(): x = a.pop() y = b.pop(0) a.insert(0,y) b.append(x) r = robot.pop() robot.insert(0, r) #로봇 이동 def move(): for i in range(n-1,0,-1): #3 , 2, 1 #맨 끝에서부터 if robot[i] == 0 and a[i] >= 1: #로봇이 없고, 내구도가 1 이상이면 if robot[i-1] == 1: #이전 칸에 로봇이 있다면 robot[i] += 1 #현재 칸에 로봇 +1 a[i] -= 1 #내구도 1 감소 robot[i-1] -= 1 #이전 칸 로봇이 현재 ..
문제요약 나의 코드 및 설명 너비 우선 탐색을 통해 회전할 범위에 있는 좌표를 순차적으로 방문하며, 스택을 활용해 현재 좌표 값을 저장하고, 다음 좌표 방문 시 스택에 저장된 이전 좌표 값으로 갱신한다. 순열 라이브러리를 통해 가능한 모든 회전 연산의 경우의 수를 탐색하여, 최소값을 구했다. from itertools import permutations from collections import deque import copy #한 줄씩 방문하면서 스택에 값을 넣고, 다음 좌표에 값을 넣는다 def bfs(sx,sy,ex,ey,stack,board): queue = deque() v = [[0 for _ in range(m)] for _ in range(n)] v[sy][sx] = 1 stack.appe..
문제요약 나의 코드 및 설명 (참고한 코드) fill() : cctv 번호에 맞게 감시 지역을 채우는 함수 dfs() : 가능한 감시 지역을 백트래킹으로 모두 파악 dfs()에서 리스트 cctv에 저장된 cctv정보(cctv번호, x,y)를 하나씩 꺼내고, cctv번호를 통해 가능한 감시 방향을 for문을 통해 탐색하며 fill 함수를 통해 그리드를 업데이트한다. import copy #--------------------함수 정의 부분------------------ #cctv번호에 맞게 감시 지역을 채우는 함수 def fill(board, direction, x,y): for i in direction: #ex) 여기서 direction은 [1,2]...이다 nx = x ny = y while Tru..