본문 바로가기
ML lab 01 - tensorflow의 설치 및 기본적인 operation 정말 간단한 코드 쉬운 코드가 맞지만 출력하기 위해서 오래걸렸다..... 파이참에 텐서플로우를 설치하는데 파이썬 version이 안맞아서 다시 설치하고 등등 원래 코딩은 환경세팅이 귀찮고 피곤하다. 밑의 코드에서 Session()은 tensorflow 2.0이 나오면서 종료되었다고 한다. 하지만 옛날 강좌이기 때문에 사용하려면 위의 disable~~~코드를 작성해주어야 한다. import tensorflow.compat.v1 as tf tf.disable_v2_behavior() hello = tf.constant("HELL") sess = tf.Session() print(sess.run(hello)) 실행 방법 바로 출력이 아닌 Session을 통해(근데 예전 방법인듯 하다) import tensor.. 2020. 3. 27.
[백준][파이썬] 1012 유기농 배추 BFS [핵심] BFS 분류되는 이유는 결국 1과 붙어있는것들을 모두 제거할때 count가 증가하기떄문이다. 연습해야할 코딩 방식 1. dx dy를 이용한 좌표처리 그리고 경계값 -1일때 인덱스 에러 안나게 범위 설정해주는것 2. 재귀함수를 이용한것이 아니라 While문으로 활용 3. [0]*n으로 배열을 만들면 이상하게 다르게 값이 출력된다.. (이유는 아직 모름) 주소값을 공유하는 개념때문인가? 여러번 코딩해서 구조 익힐것 numcase = int(input()) dx = [-1,0,0,1] dy = [0,1,-1,0] def recu(x,y): check = [[x,y]] while check: checka = check[0][0] #x,y값 저장 checkb = check[0][1] del check[0.. 2020. 3. 26.
[파이썬][백준] 1012 GCD [핵심] 이전의 문제와는 달리, 뉴클리드 호제법을 사용하였다. 기존의 FOR문으로 모든경우의 수를 카운팅 하는것보다 훨씬 메모리와 시간을 덜 잡을것같다 case = int(input()) def gcd(x, y): while y != 0: r = x % y x = y y = r return x for i in range(case): total = 0 num = list(map(int,input().split())) for i in range(1,len(num)-1): for j in range(i+1,len(num)): total += gcd(num[i],num[j]) print(total) 2020. 3. 26.
[백준][파이썬] 13015 별찍기(23) [핵심] 상당한 노가다로 푼 느낌이다. 재귀함수로 풀었어도 되긴 했겠지만, 많은 문제를 재귀함수로 풀었어서 이중포문을 활용해서도 풀어보고 싶었다. 앞으로 더 어려운문제는 재귀함수로 풀어야겠다. num = int(input()) print("*"*num,end="");print(" "*(2*(num-1)-1),end="");print("*"*num) for i in range(1,num-1): print(" "*i,end="");print("*",end="");print(" "*(num-2),end="");print("*",end="") print(" "*(2*(num-2)+1-2*i),end="") print("*", end="");print(" " * (num - 2), end="");print("*".. 2020. 3. 23.
[백준][파이썬] 10991 별찍기(16) [핵심] 이전까지는 재귀함수로 풀었지만, 이번엔 이중포문으로 풀어봤다. 역시 이중포문에서 첫번쨰 i를 두번쨰 포문의 range 안에 넣어주는것을 잘활용해야 한다. num = int(input()) print(" "*(num-1),end="");print("*") for i in range(2,num+1): print(" "*(num-i),end="");print("*",end=" ") for j in range(i-2): print("*",end=" ") print("*") 2020. 3. 23.
[파이썬][백준] 2448 번 별찍기 (11) [핵심] 별찍기(10)이랑 거의 동일한 문제지만 x,y좌표값이 일정하지 않고 출력형식에 맞춰주기만 하면 동일한 유형이 된다. num = int(input()) tnum = 2*num -1 lit =[[" " for i in range(tnum)] for j in range(num)] def recu(x,y,cnt,num): if cnt == 5: for i in range(x,x+3): for j in range(y,y+5): if i == x and j == y+2: lit[i][j] = "*" if i == x+1 and j == y+1: lit[i][j] = "*" if i == x+1 and j == y+3: lit[i][j] = "*" if i == x+2: lit[i][j]="*" return.. 2020. 3. 22.
[백준][파이썬] 2447번 별찍기 [핵심] 분할정복을 이용한 별찍기 문제이다. 분할정복을 좌표를 활용하여 문제를 문때는 항상 시작점을 (0,0)이 아닌 넘겨받은(X,Y)로 해야한다. -> 자꾸 실수함. num = int(input()) lit =[["" for i in range(num)] for j in range(num)] def recu(x,y,tf,cnt): if cnt == 3: for i in range(x,x+3): for j in range(y,y+3): lit[i][j] = "*" if i == x+1: if j == y+1: lit[i][j] = " " return else: cnt = cnt // 3 recu(x, y, tf,cnt) recu(x, y+1*cnt, tf, cnt) recu(x, y+2*cnt, tf, .. 2020. 3. 22.
[파이썬][백준] 2444번 별찍기 사실 이 문제는 간단해서, 올라갔다가 내려가는 것을 반복문 두번으로 출력해도 무리가 없다 하지만 N과M시리즈를 정복한 만큼 재귀 함수로 풀어보고 싶었다. num = int(input()) def recu(num,cnt,plus): global count if cnt == num: recu(num,cnt-2,-1) return elif cnt ==0: return print(" "*(num-cnt-1)+"*"*(2*cnt-1)) recu(num,cnt+plus,plus) recu(num+1,1,1) 2020. 3. 20.
[백준][파이썬] 1992번 쿼드 트리(분할정복2탄) [핵심] 핵심은 분할정복이였다. 활용 포인트: -x,y좌표 활용 -()를 어디다가 넣어줄지 생각 결국 분할정복1문제와 거의 유사한 패턴이다. 다만, ()로 어디다가( 혹은 )를 넣어줄지 재귀함수 특성을 이용하여 넣어주어야한다. 분할정복은 부분적으로 나눠서 검사할때 쓰인다. num = int(input()) lit= [] for i in range(num): t =list(input()) lit.append(t) stack = [] def tree(x,y,size,wnt,bnt): for i in range(x,x+size): for j in range(y,y+size): if int(lit[i][j]) == 0: wnt += 1 else: bnt +=1 if wnt == size*size: stack.a.. 2020. 3. 18.