Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BOJ] 1062 가르침 #33

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open

[BOJ] 1062 가르침 #33

wants to merge 4 commits into from

Conversation

Hellol77
Copy link
Member

@Hellol77 Hellol77 commented Jul 20, 2022

[BOJ] 1062 가르침

로직 개요

python/ https://www.acmicpc.net/problem/1062 /백준/ backtracking

N개의 단어들 중 K개의 글자만 배워서 읽을수 있는 단어의 최대값을 찾는 문제입니다. 모든 주어지는 단어들은 'anta' 로 시작해서 'tica'로 끝나는 단어들 입니다.
이번에는 한시간동안 고민하다가 답지를 봤습니다... 여러 가지의 풀이들이 있었는데 재귀로도 풀 수 있더군요.. 하지만 이 문제를 재귀로 풀기에는 제 머리가 버텨내지 못했답니다. 결국 본 답지는 backtracking으로 푸는 것이였어요. backtracking은 해를 찾는 도중에 아니여서 막히면 되돌아가서 해를 찾는 방식입니다. 힌트를 얻고 제 방식대로 풀어봤는데 시간초과가 나더군요..
그래서 sys를 사용한 입력과 global코드가 아닌 함수코드를 사용했습니다. 왜인지 모르겠지만 chr()함수 부분도 다른 방식으로 적으면 시간초과가 났습니다.. 이 3가지 조건이 갖춰졌을때 시간초과가 나지 않았어요...알다가도 모를 파이썬의 세상

결과

image

숫자를 넣으면 유니코드 문자를 반환해주는 chr()함수, 문자를 넣으면 유니코드 정수를 반환해주는 ord()함수

from itertools import combinations

레퍼런스 (선택)

파이썬 리스트에 있는 값들의 모든 조합 구하기
https://ourcstory.tistory.com/414

function 코드와 global 코드의 차이
https://8iggy.tistory.com/155

파이썬 ord 함수, chr 함수
https://blockdmask.tistory.com/544

@Hellol77 Hellol77 added the BOJ 백준 온라인 저지 문제풀이 label Jul 20, 2022
@Hellol77 Hellol77 requested review from Parkjju and wJJin July 20, 2022 21:38
@Hellol77 Hellol77 self-assigned this Jul 20, 2022
Copy link
Collaborator

@wJJin wJJin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

처음에 봤을때 문제 이해가 너무 어려워서 조금 시간이 걸렸습니다. 확실이 파이썬이 시간에 좀 더 신경을 써야 되는 것 같습니다. 동현님 푸신 것처럼 앞으로 알고리즘 문제 같은 경우 시간 부분에 유의를 많이 해야 겠네요....

고생하셨습니다!! 🙌🙌

# x=input()
# y=x[4:-4]
# A.append(x)
A=[sys.stdin.readline().rstrip()[4:-4] for _ in range(N)] # 시간초과가 나서
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스크린샷 2022-07-27 오후 5 26 18

처음 알았습니다... 10^6 데이터 입력에 대해 sys.stdin.readline()이 input()에 비해 10배 넘게 빠르다는군요...
도움이 될까 해서 다른 함수들에 대해서도 속도 관련해 정리된 링크 첨부드립니다!
https://medium.com/@xkumiyu/8-speed-differences-you-need-to-know-in-python-db7266c3b177



if K>=5:
learn=[0]*123
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

learn 리스트에서 사용되는 범위는 learn[97]~learn[122] 까지 인가요?

# chr() 함수는 정수를 인자로 받고 해당 정수에 해당하는 유니코드 문자를 반환하는 함수입니다.
# ord() 함수는 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환합니다.
# 97부터 'a' 입니다. ord('a')=97 chr(97)='a' 입니다.
def a(A,learn): # 처음에는 함수코드를 사용 안하고 global코드를 이용했습니다. 하지만 시간초과로 함수코드로 옮겨봤습니다.
Copy link
Collaborator

@wJJin wJJin Jul 27, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

global 변수랑 function 저장 방식 때문에 차이가 있다는건 알고 있었는데 그렇게 차이가 안 클줄 알았었는데 아닌가 보네요. 배워갑니다!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BOJ 백준 온라인 저지 문제풀이
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants