목록
반응형
Programming (14)
반응형
7JeY world
Stack (1) 연결 자료구조 방식을 이용한 스택의 구현 스택의 초기상태(공백스택)는 참조변수 top을 null로 설정하여 표현 연결 자료구조 방식을 이용하여 스택을 구현하면 스택의 원소는 연결리스트의 노드가 된다. 스택에 원소를 삽입할 때 마다 연결 리스트에 노드를 하나씩 할당한다. 스택 원소의 순서는 연결 리스트 노드의 링크를 사용하여 표현하고, 스택의 top은 참조변수 top을 사용한다. 중위 표기 수식을 후위 표기 수식으로 변환하는 연산을 수행하는 프로그램을 구현 interface Stack { boolean isEmpty(); void push(char item); char pop(); void delete(); char peek(); } class StackNode { char data; S..
[boj 12851번] 숨바꼭질2 현재 index까지 올 수 있는 방법이 몇개있는지 담는 cnt[index]배열이 필요하다. check[index] = true 임에도 next위치에 가는 경로가 최단이면 cnt를 늘려주어야 한다. 아직 방문하지 않은 상태 이미 방문 했더라도 이동거리가 같은 경우 dist[next] = dist[now] +1 이라면 queue에 넣어주면 된다. public class Main { static boolean check[] = new boolean[100001]; static int cnt[] = new int[100001]; static int dist[] = new int[100001]; static int N, K; public static void bfs(int N, ..
[boj 1697번] 숨바꼭질 N : 수빈이의 위치 K : 동생의 위치 X+1 or X-1 : 걷기 X*2 : 순간이동 동생을 찾을 수 있는 가장 빠른 시간을 구하는 문제 public class Main { static int N, K; static int check[] = new int[100001]; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken());..
[boj 1987번] 알파벳 문제 :: https://www.acmicpc.net/submit/1987/18450536 r행 c열의 표 모양의 보드가 있다. 좌측 최 상단(1,1 or 0,0)에서 시작해 말이 최대한 몇 칸을 이동 할 수 있는지 구하는 문제. int board[][] : 입력 되는 보드 boolean check[] : 방문한 알파벳 x, y : 현재 위치 ans : 최대 방문 가능한(이동 가능한) 칸의 수 go(board, check, nx, ny, max+1) public class Main { public static final int[] dx = {0, 0, 1, -1}; public static final int[] dy = {1, -1, 0, 0}; static int ans, ..
N-Queen Queen은 같은 행, 같은 열, 대각선 양쪽 모두 공격이 가능하다. 즉, 한 행에 Queen 은 하나만 둘 수 있고, 열, 대각선 양쪽 모두 마찬가지라고 할 수 있다. calc(row) : row 행에 Queen 놓는 함수 0 ~ n-1 의 행이 존재한다. 사이에 Queen을 놓았으면 올바르다고 가정한다. (row, col)로 col은 row행 어디에 Queen을 놓을지 정하는 부분이다. check() : Queen을 (row, col)에 놓고 행, 열, 양쪽 대각선을 탐색해서 Queen의 존재 여부 체크하는 함수 시간 복잡도가 각각의 Queen을 놓을때마다 검사하기에, N^N이 된다. (대각선을 검사하지 않았을 경우) 중복 검사를 할 필요가 없도록 대각선을 체크하주는 배열을 추가적으로 ..
Queue 1. Queue 연산 enQueue(item) : Queue의 뒤쪽(rear 다음)에 원소를 삽입 deQueue() : Queue의 앞쪽(front)에서 원소를 삭제하고 반환 createQueue() : 공백상태의 Queue를 생성하는 연산 isEmpty() : Queue가 공백상태인지 확인 isFull() : Queue가 포화상태인지 확인 Qpeek() : Queue의 앞쪽(front)에서 원소를 삭제 없이 반환 2. 종류 1) 선형 Queue 삽입(sudo) enQueue(item) if(isFull()) then Queue_Full(); else{ rear rear -> next = newNode; LQ -> rear = newNode; } } element deQueue(){ Node ..