영리한 프로그래밍을 위한 알고리즘 강좌

영리한 프로그래밍을 위한 알고리즘 강좌

(18개의 수강평)

14166명의 수강생

무료

권오흠
평생
입문, 초급
56개 수업, 총 28시간 14분
jbh9730 프로필

heap 정렬에서 배열 인덱스 jbh9730 25일 전

heap에서 노드 설명하실 때 항상 배열 인덱스 1부터 시작하시는데 수강생은 임의로 0이라고 생각하고 해석하면 되나요 ?

0
Dahan Jeong 프로필

Java에서의 정렬에서 정렬된 값 출력 방법 Dahan Jeong 26일 전

System.out.println(Arrays.toString(fruits)); 를 해도 주소값만 나오는데 해당 값 출력하려면 어떻게 하면 될까요 ㅠ?

0
긍정게임 프로필

MAX-HEAPIFY(A,1) 긍정게임 1달 전

MAX-HEAPIFY(A,1) 가 뭔지 모르겠습니다.

MAX-HEAPIFY 루트노드를 한번 해주면 된다는게 뭔지 모르겟습니다.

MAX-HEAPIFY를 해주는건 아는데

(A,1) 이렇게 코드 작성 되는게 그게 뭐죠?

0
SEONGMOOK LIM 프로필

Python 으로 구현해보았습니다. SEONGMOOK LIM 6달 전

class Maze:
    def findMazePath(self, x, y):
        if (x < 0 or y < 0 | x >= N or y >= N): #지도 범위를 넘어선곳
            return False

        elif (maze[x][y] != PATHWAY_COLOR): # White 0 #벽
            return False

        elif (x == N - 1 & y == N - 1): # 최종 목적지
            maze[x][y] = PATH_COLOR #Green 3
            return True

        else:
            maze[x][y] = PATH_COLOR #Green 3 # 계속 갈 수 있는 길인지, 막힌 길인지 파악이 안된 길. 일단 가보는 길
            if (self.findMazePath(x - 1, y) | self.findMazePath(x, y + 1) | \
                self.findMazePath(x + 1, y) | self.findMazePath(x, y - 1)):
                return True
            maze[x][y] = BLOCKED_COLOR #Red 2 $ 위의 if 구문에서 Return 받아서 가면 안되는 길 
            return False

if __name__ == '__main__':
    N = 8
    maze = [[0, 0, 0, 0, 0, 0, 0, 1],
            [0, 1, 1, 0, 1, 1, 0, 1],
            [0, 0, 0, 0, 0, 0, 0, 1],
            [0, 1, 0, 0, 1, 1, 0, 0],
            [0, 1, 1, 1, 0, 0, 1, 1],
            [0, 1, 0, 0, 0, 1, 0, 1],
            [0, 0, 0, 1, 0, 0, 0, 1],
            [0, 1, 1, 1, 0, 1, 0, 0]]

    PATHWAY_COLOR = 0 # 원래 길
    WALL_COLOR = 1 # 벽
    BLOCKED_COLOR = 2 # 이 길로 계속 가면 가다 도중에 막히는 길
    PATH_COLOR = 3 # 이 길로 계속 가면 끝까지 갈 수 있는 길

    s = Maze()
    print(maze)
    s.findMazePath(0, 0)
    print(maze)

0
킨글 프로필

printMaze()는 어떻게 만들어야 할까요? 킨글 9달 전

Reversion의 응용 - 미로찾기 1을 듣고 있는데요.

printMaze()라는 함수가 강의 내용 중 나오지 않아서 질문드립니다.

혹시 힌트라도 주시면 직접 구현해보려고 하는데 도움 부탁드려요

package test;

public class Recursion_Maze {
    /*
     * 현재 위치에서 출구까지 가는 경로가 있으려면
     * 1) 현재 위치가 출구이거나 혹은
     * 2) 이웃한 셀들 중 하나에서 현재 위치를 지나지 않고 출구까지 가는 경로가 있거나
     */
    private static int N=8;
    private static int maze[][] = {
            {0, 0, 0, 0, 0, 0, 0, 1},   
            {0, 1, 1, 0, 1, 1, 0, 1},
            {0, 0, 0, 1, 0, 0, 0, 1},
            {0, 1, 0, 0, 1, 1, 0, 0},
            {0, 1, 1, 1, 0, 0, 1, 1},
            {0, 1, 0, 0, 0, 1, 0, 1},
            {0, 0, 0, 1, 0, 0, 0, 1},
            {0, 1, 1, 1, 0, 1, 0, 0}
    };      
    private static final int PATHWAY_COLOUR = 0; // WHITE
    private static final int WALL_COLOUR = 1; // BLUE
    private static final int BLOCKED_COLOUR = 2; // RED
    private static final int PATH_COLOUR = 3; // GREEN

    public static void main(String[] args) {
        printMaze(); // 에러
        findMazePath(0,0);
        printMaze(); // 에러
    }
    public static boolean findMazePath(int x, int y) {
        if (x<0 || y<0 || x>=N || y>=N) // 좌표 내 유효한 범위인가를 체크
            return false;
        else if(maze[x][y] != PATHWAY_COLOUR) 
            return false;
        else if(x==N-1 && y==N-1) {
            maze[x][y] = PATH_COLOUR;
            return true;
        }else {
            maze[x][y] = PATH_COLOUR;
            if(findMazePath(x-1,y) || findMazePath(x, y+1) || findMazePath(x+1, y) || findMazePath(x, y-1)) { // 탐색하기
                return true; 
            }
            maze[x][y] = BLOCKED_COLOUR; // dead end 어떤 방향으로 가도 출구까지 가는 경로가 없다.
            return false;
        }
    }
}

1
Daniel Wiberg 프로필

동서남북 순서 Daniel Wiberg 10달 전

서 -> 북 ->동->남 순서 아닌가요?

0
Hoony 프로필

해당 강좌에 대한 pdf는 다운받지 못하는건가요 ?? Hoony 10달 전

해당 강좌에 대한 pdf는 다운받지 못하는건가요 ??

다이나믹 프로그래밍에 대한 문제 같은것들도 보고싶어서요..ㅠ

0
Hs Kim 프로필

이 강의 ppt 자료는 다운받을 수 없나요? Hs Kim 2018.07.26

이 강의 ppt 자료는 다운받을 수 없나요?

0
코알못 프로필

C언어로 quicksort 구현 해봤는데 안되네요ㅠㅜ 왜 그런걸까요? 코알못 2018.07.16

'''#include

int quicksort(int A[], int p, int q);

int partition(int A[], int p, int q);

int main()

{

int num[100]={0,}, n;

scanf("%d", &n);

for(int i=0; i<n; i++) scanf("%d", &num[i]);

quicksort(num, 0, n-1);

for(int i=0; i<n; i++) printf("%d", num[i]);

}

int quicksort(int A[], int p, int q)

{

if(p<q){

int r;

r=partition(A, p, q);

quicksort(A, p, r-1);

quicksort(A, r+1, q);

}

}

int partition(int A[], int p, int q)

{

int i=p-1;

for(int j=p; j<q-1; j++){

if(A[j]<A[q]){

i++;

int tmp=A[i];

A[i]=A[j];

A[j]=tmp;

}

}

int tmp=A[i+1];

A[i+1]=A[q];

A[q]=tmp;

}'''

0
인그니야 프로필

10분 35초에 나오는 식이 잘못된 것 같아요. 인그니야 2018.07.03

영상에서 나오는

f[n] = f[n-1]+f[n-2];

이 아니라

f[i] = f[i-1]+f[i-2];

이 식이 맞는 것 같은데 아닌가요?

0
Soojin Lee 프로필

넘 재밌었어요.. Soojin Lee 2018.06.04

프로그래머라면 누구나 미로찾기를 해봤죠

아님말고.. 라니 ㅋㅋㅋ 넘 웃겻습니다 ㅋㅋ

강의도 너무 유익해요 !

0
hello 프로필

Quadratic 코드 관련 질문입니다. hello 2018.05.21

for (int i=0; i<n-1; i++) for (int j=i+1; j<n; j++) if (x[i]==x[j]) return false;

이 부분에서 최악의 경우 실행 횟수가 n(n-1)/2번이라고 했는데, 이 부분이 잘 이해가 안갑니다.

첫번째 for문이 최악으로 n-1번 실행될 수 있고, 두번째 for문이 최악으로 n-1번 실행될 수 있으니까 이때의 최악의 경우 실행 횟수는 (n-1)(n-1)번이 되는 것 아닌가요?

0
김태호 프로필

감사합니다. 김태호 2018.03.18

감사합니다. 열심히 공부하겠습니다.!

0
Young Gyun Park 프로필

강의자료 pdf 파일 얻을수 있을까요? Young Gyun Park 2017.10.07
강의자료 pdf 파일 얻을수 있을까요?

0
Kim Hyun Tae 프로필

정말말 Kim Hyun Tae 2017.08.19
리컬시브가 돌다가 BLOCKED_COLUR가 되어서(길이 더이상 없어서) 돌아나올때 한번 지났던 PATH는 PATH_COLUR이기 때문에 3번 라인 else if(maze[x][y] != PATHWAY_COLOUR) 에서 항상 false를 리턴하면 갇히게

1