BeakJoon/Python

걸림돌 세 수의 합으로 나올 수 있는 모든 경우의 수를 계산 하는 알고리즘을 짜는데 고민을 했음 for i in range(5): for j in range(i+1, 5): for m in range(j+1, 5): digit = (card[i]+card[j]+card[m])%10 위 코드로 고민을 해결했음 for문을 총 세 개로 각각 i, j, m에 아래로 내려 갈 때 마다 i+1, j+1 부터 시작하는 for문으로 세 수의 합으로 나올 수 있는 모든 경우의 수를 고려할 수 있게 했음. 모든 경우의 수를 고려하고 가장 큰 경우의 수를 구하는 방법을 고민했음 max_digit = 0 for i in range(5): for j in range(i+1, 5): for m in range(j+1, 5): d..
걸림돌 조건들 (길이가 짧은 순, 중복 단어 1개 뺴고 삭제, 길이가 같으면 사전 순)을 어떻게 구현하는 과정에서 걸림 -> 처음에는 배열로 문자들을 받아서 길이순으로 정렬만 했다가 틀림 → 집합을 사용하면 중복도 피할 수 있고 sorted()를 사용해서 정렬도 사용할 수 있겠다 싶었음 집합에서 조건들 때문에 사전순 정렬, 길이순 정렬 둘다 써야하는데 그것을 구현하는데 문제가 생김 -> sorted_word = sorted(word, key=len)를 사용해서 길이순 정렬을 해보려고 했으나, 이렇게 하면 길이만 정렬되고 길이가 같은 단어들의 사전순 정렬이 되지 않음 -> 그래서 찾아본 결과 sorted_word = sorted(word, key=lambda x: (len(x), x))를 이용하면 길이순 ..
걸림돌 문자열의 문자들을 어떻게 비교하여 그룹 단어 유무를 판단할 것인가? → 문자열의 첫 번째 문자(0번 인덱스에 저장된 문자)가 끊기는 인덱스 부터 마지막 인덱스 까지 슬라이싱 하여 첫 번째 문자와 비교해서 만약 나온다면 처음 N을 넣어준 변수에서 -1 하는 것으로 해결 코드 # N 입력받음 N = int(input()) # 그룹단어 개수를 구하기 위해 N을 다른 변수에 저장해둠 answer = N # N 번 입력받고 문자열 아래 for문에 문자열을 처리시킴 for _ in range (N): word = input() # word의 인덱스 수 만큼 for문 돌림 for i in range (0, len(word)-1): # 0번 인덱스 부터 바로 다음 인덱스랑 비교 # 같으면 pass 다르면 그 인..
걸림돌 문제에서 제시하는 A,B의 관계를 검출 해내는 코드를 짜는데 어려움을 겪음 A의 약수를 구하는 코드를 만들고 각 약수를 더해서 B가 나오게 만드는 코드를 처음에 만듬 but 정답은 그게 아니었음 아래서 설명 코드를 다 짜고 제출하는데 채점 결과에 시간 초과가 뜸 input()을 sys.stdin.readline()으로 바꿔서 제출 했는데도 또 시간 초과가 떠서 이런 경우는 처음이라 당화하였으나 답 자체가 틀린거였음 코드 import sys N = int(sys.stdin.readline()) # N 번 반복하는 for문 for _ in range (N): num, num2= map(int,sys.stdin.readline().split()) list = [] # 1 부터 num+1 까지 i에 대입..
걸림돌 셀프 넘버를 찾아내는 알고리즘을 짜지 못했음 집합과 리스트에 대해 파악하는데 시간이 좀 걸림 ex) set(), add 등등 집합으로 만들어진 코드를 리스트로 다시 코딩하는데 기능 구현하기가 어려웠음 ex) 논셀프넘버 찾기, 변수 self_nums에 셀프넘버만 넣는 기능 등 코드 # 자연수를 natural_num에 넣고 논셀프넘버를 create_num에 넣음 natural_num = set(range(1,10001)) create_num = set() # create_num에 논셀프넘버들을 넣음 for i in range (1, 10001): for j in (str(i)): i += int(j) create_num.add(i) #self_num에 자연수에서 논셀프넘버를 뺀 숫자들(셀프넘버들)을 ..
걸림돌 : N 개의 줄에 N개의 명령을 입력 받을 때 N개의 명령 문자열을 어떻게 받아서 어떻게 하나하나 비교 해볼 것인가? → 맨 처음에 변수1에 명령어 한 개를 입력받고 후에 N-1번 반복하는 for문을 만들어 입력받게 만들고 한 루프에 변수2에 한 번 입력받고 변수1과 변수2의 문자열들을 비교하여 다른 문자가 들어있는 인덱스에 ?를 넣는다 그리고 그걸 N-1번 반복하는 것으로 해결 마지막 결과 출력 값들 사이에 띄어쓰기가 들어간 후 출력이 됨 → sep을 이용해서 띄어쓰기 없이 붙여서 출력하는 것으로 해결 코드 #명령어 입력받는 횟수 입력받기 N = int(input()) #명령어를 변수1에 입력받기 cmd = list(input()) #앞에서 한 번 입력 받았기 때문에 N-1번 입력받게끔 for문..
이 문제에서 고민했던 것 not enough values to unpack 이 오류를 해결하기 위해서는 명령어와 정수를 각각 다른 함수에 입력받으면 안됨 → 정수 입력이 없는 명령어를 실행 할 때는 오류가 생김 -> 이 문제는 cmd 라는 리스트로 명령어와 정수를 리스트로 저장하면 정수가 있을 때 없을 때 구분 없이 기능을 하게 되겠구나 깨달음 위 문제를 처음에는 다섯 개의 명령의 이름으로 각각 함수를 따로 정의하고 기능을 추가해서 할 생각이었음 -> 하지만 너무 돌아가는 느낌이 있어 그냥 if문과 elif문을 사용하여 명령어를 문자열로 입력받아 조건으로 입력받은 문자열과 명령의 이름과 같으면 그 기능을 구사하게 만들기로 결정함 -> but 알고리즘 스터디에서 def 등으로 각각 함수를 따로 정의하는 것..
조건 첫째 줄에 영어 단어 S를 입력받는다 단어 S의 각각의 알파벳에 대해 등장하는 위치를 공백으로 구분해서 출력한다 없는 단어일 경우에는 '-1'을 출력한다 코드 #S에 영어로 된 단어 문자열을 입력받는다 S = input() #alphabet에 알파벳 문자를 순서대로 저장해둔다 alphabet = 'abcdefghijklmnopqrstuvwxyz' #for문 i에 alphabet에 들어있는 문자를 순서대로 대입하면서 반복한다 for i in alphabet: #입력받은 단어 S안에 i에 대입 된 문자가 있다면 그 문자의 인덱스를 출력 if i in S: print(S.index(i), end=' ') #입력받은 단어 S안에 i에 대입 된 문자가 없다면 '-1' 출력 else: print(-1, end..
쿼딩~
'BeakJoon/Python' 카테고리의 글 목록 (4 Page)