반응형

올해 4학년이 되기도 하였고, 하반기에 취업을 성공하여 학교를 편하게 다니고 싶은 마음이 컸습니다.(진심 200%)

 

그래서 인터넷에서 추천하는 알고리즘 공부 방법을 많이 찾아보았고, 현재 컴퓨터공학을 전공하고 있기에 약간의 근거있는 자신감이 있었습니다.

 

일단 나동빈님께서 추천하신 방법은

 

  1. 코드업 기초 100제
  2. 백준 그리디, 동적 프로그래밍
  3. 코드포스의 Blue Level
  4. 나동빈님의 온라인 강의

그래서 코드업 기초 100제를 파이썬으로 해결해보았고 백준 그리디로 넘어갔습니다. 하지만 놀랍게도 아무것도 못했습니다..ㅎ..

 

현재 나의 실력을 몰라서 그러지 않을까? 하는 생각에 프로그래머스에 레벨 테스트를 해봤습니다. 레벨 1 문제도 시간이 엄~~~청 부족했습니다.

 

그래 처음부터 다시하자.. 라는 생각에 이것 저것 찾아봤습니다. 삼성 SW Expert Academy 를 찾게 되었고 여기서도 레벨 테스트를 해봤는데 초심자가 나왔습니다...ㅎ_ㅎ 충격...

 

무료 강의가 있으니 기본강좌와 함께 백준 알고리즘을 병행하는 것이 큰 도움이 될 것 같습니다.

 

정보처리기사 시험을 앞두고 있어, 많은 시간을 투자할 지 모르겠지만.. Upgrade된 실력이 있었으면 좋겠습니다.

아무도 안 들어오는 Blog 지만 알고리즘에 대한 Know-how 알고 계시면 댓글로 부탁드리겠습니다.

 

빠이-

 

반응형
반응형

1099 : [기초-2차원배열] 성실한 개미

 

엑셀로 이동 경로를 예상하면서 코딩하니까 편했습니다.

코드를 계속 수정하면 조금 더 좋은 결과가 나올 것 같습니다.

 

# -*- Encoding:UTF-8 -*- #

# 배경 준비
background = [
    [0 for cols in range(10)]
    for widths in range(10)
]

# 배경 input
for i in range(10):
    num = input().split()
    background[i] = list(map(int, num))


# 개미 집
startPoint = (1, 1)

# 현재 좌표
point = [0, 0]
point[0] = startPoint[0]
point[1] = startPoint[1]

# 현재 상태
status = 0

while status != 2:
    # print('현재 좌표 x = ', point[0], 'y=', point[1])
    # print('현재 값 = ', background[point[0]][point[1]], '\n')

    # 확인
    if background[point[0]][point[1]] == 2:
        status = 2
        background[point[0]][point[1]] = 9
    else:
        # 경로 표시
        background[point[0]][point[1]] = 9

        # 경로 이동
        if background[point[0]][point[1]+1] != 1:
            point[1] = point[1]+1
            # print(point[1])
        else:
            point[0] = point[0] + 1
            # print(point[0])

        # 유효성
        if point[0] > 8:
            point[0] = 8
            break;
        if point[1] > 8:
            point = 8
            break;


# 배경 출력 output
for i in range(10):
    for j in range(10):
        print(background[i][j], end=' ')
    print()

 

반응형
반응형

1098 : [기초-2차원배열] 설탕과자 뽑기

https://codeup.kr/problem.php?id=1098

 

# -*- Encoding:UTF-8 -*- #

'''
input()
1) 바둑판 x,y
2) 막대 개수
3) 길이 방향 좌표

첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고,
두 번째 줄에 놓을 수 있는 막대의 개수(n)
세 번째 줄부터 각 막대의 길이(l), 방향(d), 좌표(x, y)가 입력된다.
방향(d) 가로:0 세로1

'''

# 바둑판 input()
scan = input().split()
xy = list(map(int, scan))

# 바둑판 초기화
board = [
    [0 for cols in range(xy[1])]
    for width in range(xy[0])
]

# 막대개수
repeat = int(input())

# 막대놓기
for i in range(repeat):
    scan = input().split()
    stick = list(map(int, scan))

    # 가로 놓기
    if stick[1] == 0:
        for j in range(stick[0]):
            x = stick[2] - 1
            y = stick[3] - 1
            board[x][y+j] = 1

    # 세로 놓기
    if stick[1] == 1:
        for j in range(stick[0]):
            x = stick[2] - 1
            y = stick[3] - 1
            board[x + j][y] = 1

# 바둑판 출력
for i in range(xy[0]):
    for j in range(xy[1]):
        print(board[i][j], end=' ')
    print()

 

반응형
반응형

1097 : [기초-2차원배열] 바둑알 십자 뒤집기(설명)

# -*- Encoding:UTF-8 -*- #

# 바둑판 준비
board = [
    [0 for i in range(20)]
    for j in range(20)
]

# 바둑판 input
for i in range(0, 19):
    num = input().split()
    board[i] = list(map(int, num))
    #print()

# 반복
repeat = int(input())

for i in range(0, repeat):
    temp = input().split()
    point = list(map(int, temp))
    x = point[0]-1
    y = point[1]-1

    # width
    for j in range(0, 19):
        if board[x][j] == 0:
            board[x][j] = 1
        else:
            board[x][j] = 0

    # cols
    for k in range(0, 19):
        if board[k][y] == 0:
            board[k][y] = 1
        else:
            board[k][y] = 0

# 바둑판 output
for i in range(0, 19):
    for j in range(0, 19):
        print(board[i][j], end=' ')
    print()
반응형

+ Recent posts