본문 바로가기

대외활동

패스트캠퍼스 Python 코딩테스트 강의 3주차

이번 강의에서는 백준 10930, 1920, 4195 번을 학습하였다.

 

1. 10930

10930번: SHA-256 (acmicpc.net)

 

10930번: SHA-256

첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다.

www.acmicpc.net

이 문제는 신기하게도 난이도를 매길 수 없는 문제였다.

문제를 보니 파이썬에서 제공하는 hashlib를 사용하면 바로 풀 수 있는 문제였다.

haslib.sha256(문자열 바이트 객체).hexdigest()

이렇게 하면 sha256을 사용하여 암호화 된 해시 결과 문자열을 얻을 수 있다. 

import hashlib

input = input()
encoded = input.encode()
rst = hashlib.sha256(encoded).hexdigest()
print(rst)

 

 

2. 1920

1920번: 수 찾기 (acmicpc.net)

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

전에 한 번 풀었던 문제이다.

 

간단하게 풀긴 했는데 

아래와 같이 작성하면 시간초과가 발생한다.

n = int(input())
lst1=list(map(int, input().split()))

m = int(input())    
lst2=list(map(int, input().split()))
    
for i in lst2:
    if i in lst1:
        print(1)
    else:
        print(0)

 

이 경우,

set을 사용하하면 더욱 단순해지므로 시간 초과 문제를 해결할 수 있다.

 

n = int(input())
lst1=set(map(int, input().split()))

m = int(input())    
lst2=list(map(int, input().split()))
    
for i in lst2:
    if i in lst1:
        print(1)
    else:
        print(0)

 

3. 4195

4195번: 친구 네트워크 (acmicpc.net)

 

4195번: 친구 네트워크

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진

www.acmicpc.net

 

유니온 파인드를 해결해야 하는 문제였는데,

이 알고리즘이 정확히 학습되어 있지 않아서 헷갈렸다.

 

import sys
sys.setrecursionlimit(10 ** 6)

def union(x, y):
    x = find(x)
    y = find(y)

    if x == y:
        return

    else:
        parent[y] = x
        visited[x] += visited[y]


def find(x):
    if x == parent[x]:
        return x

    else:
        parent[x] = find(parent[x])
        return parent[x]


t = int(sys.stdin.readline())
for _ in range(t):
    f = int(sys.stdin.readline())
    parent = dict() 
    visited = dict() 

    for i in range(f):
        a, b = map(str, sys.stdin.readline().split())

        if a not in parent:
            parent[a] = a
            visited[a] = 1

        if b not in parent:
            parent[b] = b
            visited[b] = 1

        union(a, b)
        print(visited[find(a)])

 

 

*수강 인증샷

"본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다."

 

패스트캠퍼스 온라인 강의 - 초격차 패키지 : 개발자 취업 합격 패스 With 코딩테스트, 기술면접 (fastcampus.co.kr)

 

패스트캠퍼스 온라인 강의 - 초격차 패키지 : 개발자 취업 합격 패스 With 코딩테스트, 기술면접

 

fastcampus.co.kr

 

 

 

728x90