아직 파이썬 for문이 익숙치 않다.

C언어가 편하다...

def solution(heights):
    answer = [ 0 for x in heights]
    current_v=0
    heights.reverse()
    for i, v in enumerate(heights):
        current_v=heights[i]
        for j in range(i+1, len(heights)):
            if heights[j]>current_v:
                answer[i] = len(heights) - j
                break
    answer.reverse()
    print(answer)
            
    return answer

 

타인의 풀이

def solution(h):
    ans = [0] * len(h)
    for i in range(len(h)-1, 0, -1):
        for j in range(i-1, -1, -1):
            if h[i] < h[j]:
                ans[i] = j+1
                break
    return ans

 

문자열.startswith(시작문자열)

문자열이 시작문자열로 시작하는지 알 수 있는 함수

예 'abcd'.startswith('abc') 는 True값 리턴

 

endswith라는 함수도 있다. 문자열이 인자 문자열로 끝나는지 알 수 있는 함수

 

 

import io를 하고

sbuf = io.BytesIO(imgByte)를 하면 (여기서 imgByte는 jpg이미지의 bytes였음.)

byte 이미지 데이터가 stream이 된다.

 

통신을 통해 받은 이미지를

wxPython을 사용해서 GUI에 bitmap으로 출력해주기 위해 스트림으로 바꿈.

wx.BitmapFromImage(wx.ImageFromStream( sbuf ))

스트림을 이미지로 바꾸고 이미지를 비트맵으로 바꿔주었음.

INADDR_ANY는 어떤 주소로든 접속하게 해준다.

 

처음에 python으로 서버를 만들때 localhost를 서버 address에 넣었는데 외부에서 연결이 되지않아 당황했다.

C코드 서버를 보니 INADDR_ANY로 바인딩하는 것을 보고, 어떤 주소에서든 접속하려면 localhost로 설정하는게 아니라 INADDR_ANY로 설정해야함을 알게되었다.

 

python의 소켓 모듈을 사용해서 서버를 만들 때, INADDR_ANY로 설정하려면 bind할 때 empty string을 address부분에 넣어주면 된다.

 

예) server_socket.bind(('', PORT))

+ Recent posts