파이썬2021. 6. 13. 19:00
728x90

파이썬에서의 2차원 배열은 2차원 리스트이다.

근데 이게 col, row가 조금 헷갈려서 정리 해 둔다.

 

 

우선 5*3 리스트를 만든다.

 

arr = [[0 for _ in range(c)] for _ in range(r)]

  -> 이 코드를 통해 0으로 초기화 시킬 수 있다.

  [0을 c(=5)만큼 리스트로 만들고] 그거를 r(=3)만큼 리스트로 만들어라.

  이런 의미이다.

 

r,c  = 5,3
arr = [[0 for _ in range(c)] for _ in range(r)]
arr[2][0]=1
print(arr)

 

[ 결과 ]

 

----------------------------------

 

나는 다음과 같이 출력될 줄 알았다.

5*3 2차원 배열에서 (2,0)의 원소만 1로 변경 된 그림이다.

 

하지만 결과는 이렇게 출력되는 것 같다.

 

이거는 마치 다음의 그림처럼 세로로 읽은 결과로 보인다.

 

이러한 이유로 파이썬에서 2차원 배열을 만들 때는 주의를 기울여야 할 것 같다!

 

 

반응형

'파이썬' 카테고리의 다른 글

[ Python ] 백준 15973 (100점)  (0) 2021.06.13
[ Python ] 백준 10157 - 실패..  (0) 2021.06.13
[ Python ] 백준 11729 - 시간초과 해결!!  (0) 2021.06.06
[ Python ] 백준 13300 파이썬  (0) 2021.05.31
[ Python ] 백준 10828 파이썬  (0) 2021.05.31
Posted by mminky
깃 & 깃허브 입문2021. 6. 9. 16:52
728x90

* BOLD체 ( 굵은글씨 )

 

# When I enter RIGHT SANDWICH and RIGHT CAKE

 

 

* 이미지

 

우선 컴퓨터에서 img폴더를 만들어서 필요한 이미지들을 저장한다.

 

Add file에서 깃허브에 드래그&드랍으로 올린다.

(add file이지만 폴더도 잘 올라감)

[ 코드 ]

customer A
![jpg_1](./img/1.JPG)

 

[ 결과 ]

 

 

 

 

-----------------------------

[ 전체코드 ]

# python_gui_bakery
implement a bakery program with python gui.


# When I enter RIGHT SANDWICH and RIGHT CAKE
customer A
![jpg_1](./img/1.JPG)

custormer B
![jpg_2](./img/2.JPG)


# When I enter WRONG SANDWICH and RIGHT CAKE
customer A
![jpg_3](./img/3.JPG)

customer A
![jpg_5](./img/5.JPG)


# When I enter WRONG SANDWICH and WRONG CAKE
![jpg_4](./img/4.JPG)


 

 

[ 전체 결과 ]

https://github.com/mmingyy/python_gui_bakery.git

반응형
Posted by mminky
블로그 관리 (광고)2021. 6. 7. 01:10
728x90

이전에 주소를 잘못 입력해둬서 PIN이 도착하지 않았습니다ㅠㅠ 그래서 계속 알림이 뜨더라구요ㅠㅠ

[ 주의사항 ]
* 4개월 이내에 입력하지 않으면 계정 정지 가능
* 첫 발송된지 3주가 지나야 재신청 가능

첫 페이지에 경고가 계속 뜨더라구요..


2021.05.13에 첫 우편을 발송했다고 합니다!
저는 3주가 지난 6/3일 이후에 신청했습니다!


PIN 다시 보내기 클릭!

PIN 다시 보내기 클릭!


2~4주 이내에 받을 수 있다고 합니다!

반응형
Posted by mminky
파이썬2021. 6. 6. 19:28
728x90

* 문제
https://www.acmicpc.net/problem/11729

11729번: 하노이 탑 이동 순서

세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로

www.acmicpc.net


[ 해결 원리 ]
하노이탑 개념에 대해 그림으로 쉽게 설명해두었으니 참고하면 좋을 것 같다 :)
https://mminky.tistory.com/116

[ C ] 분할정복 - 하노이탑 (a divide-and-conquer algorithm for the Towers of Hanoi problem)

[ 문제 ] Write a divide-and-conquer algorithm for the Towers of Hanoi problem. The Towers of Hanoi problem consists of three pegs and disks of different sizes. The object is to move the disks that a..

mminky.tistory.com



[ 코드 ]
**하노이탑 파이썬 - 시간초과가 떴다면**
print(count) 대신 print(2**n - 1) 를 해라!
-> 하노이탑의 총 옮긴 횟수는 2^n - 1으로 정해져 있다.
(하지만 개인적으로 옮길 때 마다 count를 증가시켜서 총 count를 출력하는 게 맞다고 생각한다.
근데 그렇게 하면 시간 초과가 된다..)

import sys input=sys.stdin.readline n = int(input()) #count = 0 #옮긴 횟수 #ans='' def hanoi(disk_num,from_peg,to_peg,tmp_peg): global count,ans if(disk_num==1): print(from_peg,to_peg) # ans += '{} {}\n'.format(from_peg,to_peg) # count += 1 return hanoi(disk_num-1,from_peg,tmp_peg,to_peg) print(from_peg,to_peg) # ans += '{} {}\n'.format(from_peg, to_peg) # count += 1 hanoi(disk_num-1,tmp_peg,to_peg,from_peg) print(2**n - 1) #count를 하니 시간 초과 뜸 # (처음)1 에서 (최종)3으로 이동함 # 2는 거치는 곳일 뿐! hanoi(n,'1','3','2') #print(count) #print(ans)



[ 결과 ]
와.. 진짜 시간초과 너무한거 아니냐고....
몇 번을 시도해서 결국 통과되었다.. 너무해..

반응형

'파이썬' 카테고리의 다른 글

[ Python ] 백준 10157 - 실패..  (0) 2021.06.13
[ Python ] 2차원 배열 (리스트)  (0) 2021.06.13
[ Python ] 백준 13300 파이썬  (0) 2021.05.31
[ Python ] 백준 10828 파이썬  (0) 2021.05.31
[ Python ] 백준 1735 파이썬  (0) 2021.05.31
Posted by mminky
파이썬2021. 5. 31. 00:37
728x90

[ 문제 ]

https://www.acmicpc.net/problem/13300

 

13300번: 방 배정

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어

www.acmicpc.net

 

 

[ 코드 ]

 

#n: student num
#k : max people# in one room
n, k = map(int, input().split())
st = [[0]*2 for _ in range(6)] #성별2개 6학년

#입력
for _ in range(n):
    # st[학년][성별]
    s,y= map(int, input().split())
    st[y-1][s-1] += 1
#    print(st[y-1][s-1])

room_num=0
for a in range(6):#학년
    for b in range(2):#성별
        #print(st[a][b])
        #math.ceil써도 :)
        if(st[a][b]%k == 0):
            room_num += st[a][b]/k
        else:
            room_num += st[a][b]//k + 1
print(int(room_num))

 

 

[ 결과 ]

반응형
Posted by mminky
파이썬2021. 5. 31. 00:34
728x90

[ 문제 ]

https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

[ 코드 ]

#시간초과 시 추가하면 좋은 구문
# https://www.acmicpc.net/board/view/44990
import sys
input=sys.stdin.readline

n = int(input()) #명령의 수
stack=[]

def push(x):
    #리스트의 마지막에 추가
    stack.append(x) #딱히 int(x)할 필요는 없을 듯

def pop():
    if(len(stack)==0):
        print(-1)
    else:
        print(stack.pop())

def size():
    print(len(stack))

def empty():
    if(len(stack)==0): #비면
        print(1)
    else: #안 비면
        print(0)

def top():
    if(len(stack)==0):
        print(-1)
    else:
        print(stack[-1])


for i in range(n):
    command=input().split() #push 1 같은 애들 분리
    if(command[0] == 'push'):
        push(command[1])
    if (command[0] == 'pop'):
        pop()
    if (command[0] == 'size'):
        size()
    if (command[0] == 'empty'):
        empty()
    if (command[0] == 'top'):
        top()

 

 

[ 결과 ]

반응형

'파이썬' 카테고리의 다른 글

[ Python ] 백준 11729 - 시간초과 해결!!  (0) 2021.06.06
[ Python ] 백준 13300 파이썬  (0) 2021.05.31
[ Python ] 백준 1735 파이썬  (0) 2021.05.31
[ Python ] 백준 1475 파이썬  (0) 2021.05.31
[ Python ] 백준 1453 파이썬  (0) 2021.05.31
Posted by mminky
파이썬2021. 5. 31. 00:28
728x90

[ 문제 ]

https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.

www.acmicpc.net

 

 

[ 코드 ]

 

import sys
input=sys.stdin.readline

a1,a2=map(int,input().split()) #a1/a2 분수
b1,b2=map(int,input().split())

#최소공배수 구하기
def lcm(x,y):
    for i in range(x,(x*y)+1): # x ~ x*y
        if(i%x==0 and i%y==0):
            return i
#최대공약수 구하기
def gcd(x,y):
    #y가 0될 때 까지
    while y:
        x,y  = y, x%y
    return x

#분모 denominator
denom = lcm(a2,b2)

#분자 numerator
num = a1*(denom/a2) + b1*(denom/b2)

#분자분모의 최대공약수로 나눌거임
div = gcd(num,denom)
denom /= div
num /= div

print(int(num),int(denom))

 

 

[ 결과 ]

반응형

'파이썬' 카테고리의 다른 글

[ Python ] 백준 13300 파이썬  (0) 2021.05.31
[ Python ] 백준 10828 파이썬  (0) 2021.05.31
[ Python ] 백준 1475 파이썬  (0) 2021.05.31
[ Python ] 백준 1453 파이썬  (0) 2021.05.31
[ Python ] 문자열 replace로 swap 하기  (0) 2021.05.29
Posted by mminky
파이썬2021. 5. 31. 00:17
728x90

[ 문제 ]

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.

www.acmicpc.net

 

 

[ 코드 ]

 

n = input() #다솜이 방번호를 string으로
card=[0]*10 #0~9까지 번호
card_6n9 = 0

for i in n:
    if(i=='6' or i=='9'): #6,9 동일취급
        card_6n9 += 1
    else:
        card[int(i)] += 1

#6, 9 개수 결정
if(card_6n9 % 2 == 0):
    card_6n9 = card_6n9//2
else:
    card_6n9 = card_6n9//2 + 1

card[6] = card_6n9

#card에 있는 것들 중 최대값이 세트의 개수
print(max(card))


#n = int(input()) #다솜이 방번호
# card=[0]*9 #0~8까지 번호 (9는 따로)
# card_6n9 = 0
#
# while(n!=0):
#     a= n % 10
#     if(a==6 or a==9): #6이랑 9랑 같이 취급
#         card_6n9 += 1
#     else:
#         card[a] += 1
# #    n_arr.append(a)
#     n = n//10
#
# #n_arr.sort() #같은애들끼리 모음
#
# #01234578: 한 세트에 한 개
# #6 9 : 한 세트에 두 개 -> 올림
# if(card_6n9%2 == 0):
#     card_6n9 = card_6n9//2
# else:
#     card_6n9 = card_6n9//2 + 1
#
# set=max(max(card) , card_6n9)
# print(set)

 

 

[ 결과 ]

반응형
Posted by mminky