업그레이트 (UpGreate)

- 威武不屈


  • Home

  • Categories

  • About

  • Archives

  • Tags

  • Search

python_수열함수

Posted on 2019-08-22 | In LANGUAGE

수열함수

range()

파이썬 내장 함수로 수열기능

filter()

걸러내기 기능의 내장함수

Read more »

SW Expert Academy - D2_1979

Posted on 2019-08-22 | In ALGORITHM

D2_1979. 어디에 단어가 들어갈 수 있을까

문제:

  • N X N 크기의 단어 퍼즐을 만들려고 한다. 입력으로 단어 퍼즐의 모양이 주어진다.

  • 주어진 퍼즐 모양에서 특정 길이 K를 갖는 단어가 들어갈 수 있는 자리의 수를 출력하는 프로그램을 작성하라.

  • [예제]

  • N = 5, K = 3 이고, 퍼즐의 모양이 아래 그림과 같이 주어졌을 때

    img

  • 길이가 3 인 단어가 들어갈 수 있는 자리는 2 곳(가로 1번, 가로 4번)이 된다.

    img

입력:

  1. 테스트 케이스 T
  2. 테스트 케이스마다 퍼즐의 가로,세로 길이N, 단어의 길이 K (5<=N<=15) (2<=K<=N)
  3. 테스트 케이스마다 N줄의 퍼즐 모양이 2차원정보로 주어진다.(흰색 1, 검정색 0)

출력:

ex)

#1 5 #2 7 #3 6

생각한 로직:

  • 2차원 배열 빠짐없이 탐색 문제
  • 흰색인 부분이 연속 될때 카운트해서 검정색이나 벽을 만나는 경우 끝이날때 단어의 길이와 일치하면 +1
  • 이 방법을 가로 탐색, 세로 탐색 나눠서 실행

코딩:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def chk(puzzle,N,K):
    global result
    for i in range(N):
        gcnt=0
        scnt=0
        # print(N,K,result)
        for j in range(N):
            #가로 체크
            if puzzle[i][j]==1:
                gcnt+=1
            else:
                if gcnt==K:
                    result+=1
                gcnt=0


            #세로 체크
            if puzzle[j][i]==1:
                scnt+=1
            else:
                if scnt==K:
                    result+=1
                scnt = 0
        #체크를 다하고 지금 벽을 만났을 때 확인 
        if j==N-1:
            if gcnt == K:
                result += 1
            if scnt == K:
                result += 1



for tc in range(1,int(input())+1):
    N,K = map(int,input().split())
    puzzle=[list(map(int,input().split())) for x in range(N)]
    result=0
    chk(puzzle,N,K)
    # print(puzzle)
    # 가로로 확인
    # 세로로 확인
    print("#{} {}".format(tc,result))
Read more »

python_세트

Posted on 2019-08-21 | In LANGUAGE

세트란?

  • 수학의 집합과 유사한 형태로 ‘{‘ 과 ‘}’로 감싼다.

    • **& , ** 사용 가능하다.
  • 리스트처럼 값의 모임이지만 순서가 없고 중복을 허용하지 않는다.

    ※ 이런 특성으로 중복을 제외하는 필터기능으로 많이 사용한다.

    1
    2
    3
    4
    5
    c="hello"
    d=set(c)
      
    >>> d
    {'e','h','l','o'}
    

선언법

1
a = {'a','b','c'}

※ list(), set(), tuple() 을 이용해 언제든지 서로 변환 될 수 있다!

Read more »

SW Expert Academy - D2_1976

Posted on 2019-08-21 | In ALGORITHM

D2_1974. 스도쿠 검증

문제:

  • 스도쿠는 숫자퍼즐로, 가로 9칸 세로 9칸으로 이루어져 있는 표에 1 부터 9 까지의 숫자를 채워넣는 퍼즐이다.

    img

  • 같은 줄에 1 에서 9 까지의 숫자를 한번씩만 넣고, 3 x 3 크기의 작은 격자 또한, 1 에서 9 까지의 숫자가 겹치지 않아야 한다.

    img

  • 입력으로 9 X 9 크기의 스도쿠 퍼즐의 숫자들이 주어졌을 때, 위와 같이 겹치는 숫자가 없을 경우, 1을 정답으로 출력하고 그렇지 않을 경우 0 을 출력한다.

입력:

  1. 테스트 케이스 T

  2. 9*9 크기의 퍼즐 데이터를 테스트 케이스 마다 준다.

    (입력으로 주어지는 퍼즐의 모든 숫자는 1 이상 9 이하의 정수이다.)

    (퍼즐은 모두 숫자로 채워진 상태로 주어진다)

출력:

ex)

#1 1 #2 0 #3 1 #4 0 #5 0 #6 1 #7 0 #8 1 #9 1 #10 0

생각한 로직:

  • 스도쿠를 한칸 한칸 탐색하면서 한번이라도 중복이 나오면 return 0 문제 없이 다 돌아간다면 return 1
  • 중요한 것은 한칸 한칸 빠짐없이 탐색하면서 중복을 어떻게 처리할 것인가

코딩:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import sys
sys.stdin = open("1.txt","r")

def chksudoku(sudoku):
    for i in range(9):
        garo = list()
        sero = list()

        for j in range(9):
            #가로탐색
            if sudoku[i][j] in garo:
                return 0
            else:
                garo.append(sudoku[i][j])
            #세로탐색
            if sudoku[j][i] in sero:
                return 0
            else:
                sero.append(sudoku[j][i])
            if i%3==0 and j%3==0:
                sq = list()
                for k in range(3):
                    for l in range(3):
                        if sudoku[i+k][j+l] in sq:
                            return 0
                        else:
                            sq.append(sudoku[i+k][j+l])
            # print(garo)
            # print(sero)
            # print(sq)
            # print("=======================")
    return 1

    #네모탐색




for tc in range(1,int(input())+1):
    sudoku=[list(map(int,input().split())) for x in range(9)]
    #각자 탐색하면서 리스트에 넣다가 하나라도 중간에 중복되는게 있으면 out!
    result = chksudoku(sudoku)

    print("#{} {}".format(tc,result))
Read more »

python_생성자,소멸자

Posted on 2019-08-20 | In LANGUAGE

생성자, 소멸자

생성자 메소드 __init__

  • 객체의 초기화
  • 인스턴스 객체가 생성 될 때 가장 먼저 호출 된다.

소멸자 메소드 __del__

  • 객체의 소멸
  • 인스턴스 객체의 레퍼런스 카운트가 0이 될때 자동으로 호출 된다.

※ 인스턴스 사용 후 참조카운트가 0이 되면 스스로 소멸한다.

Read more »
1 … 17 18 19 … 32
Sik

Sik

156 posts
7 categories
30 tags
RSS
© 2021 Sik
Powered by Jekyll
Theme - NexT.Muse