개인활동/코테(56)
-
백준 4375번 : 1
https://www.acmicpc.net/problem/4375이 문제.. 이해하는데 정말 어려웠다.말을 왤케... 이상하게 적은 것 같지.. 간혹 이런 문제가 있는 것 같다. 이 문제 1의 경우 일단 입력받은 n의 배수 중 모든 자리수가 1인 경우, 즉 11, 111, 1111 이런 수들을 의미한다.n의 배수 중 모든 자리수가 1인 배수가 있을 때 그 배수 중 가장 작은 배수를 뽑아내어 몇자리 수인지 출력하는 것!import sysinputs = sys.stdin.read().strip().split()for i in inputs: num = "1" while num: if not(int(num) % int(i)): print(len(num)); break else: num += "1..
2024.06.29 -
백준 1037번 : 약수
https://www.acmicpc.net/problem/1037n = int(input())divisor = sorted(list(map(int, input().split())))if n == 1: print(divisor[0]**2)else: print(divisor[0]*divisor[-1]) 예전에 풀었던 문제인데 업로드를 안했었다. 첫째줄에 약수의 개수가 주어지고, 둘째줄에 약수가 주어지면 이에 대한 연산을 진행하는 문제였다. 나의 경우 경우를 나누어 문제를 풀었지만, 사실 저렇게 조건이 없어도 충분히 풀리는 문제이긴 하다. *a,=map(int,[*open(0)][1].split());print(min(a)*max(a)) 숏코드를 보던 중, 요새 min, max를 쓸 생각을 잘 못했는데, 이 ..
2024.06.29 -
백준 10430번 : 나머지
https://www.acmicpc.net/problem/10430a, b, c = map(int, input().split())print((a+b)%c)print(((a%c) + (b%c))%c)print((a*b)%c)print(((a%c)*(b%c))%c)이 나머지 문제는 사실 똑같은 공식에 대한 검증을 하는 것이다.(a+b) % c = (a%c) + (b%c) (a*b) % c = (a%c) * (b%c)분배법칙에 따라 두 식은 사실 같은 식이다. 그래서 숏코드는 아래와 같이 분배법칙 전의 식으로 계산하여 보여주는 것으로 되어있다.a,b,c=map(int,input().split());print(*[(a+b)%c]*2+[a*b%c]*2) 이 문제도 쉽게 해결~
2024.06.29 -
[프로그래머스] 서울에서 김서방 찾기
def solution(seoul): for i, string in enumerate(seoul): if string == "Kim": return f"김서방은 {i}에 있다" enumerate을 이용해 인덱스를 추출해주었다.근데..... 처음에 시도하였을 때는 seoul.index("Kim")을 이용하였는데, 왜 에러가 떴을까?SyntaxError: invalid syntaxf-string을 이용하였을 때 아래와 같이 코드를 짰었는데, 변수로 넣어주지 않아 에러가 뜬걸까 싶다.def solution(seoul): return f"김서방은 {seoul.index("Kim")}에 있다" 이렇게 포맷함수를 사용한 경우에는 코드가 잘 돌아가더라!def findKim(..
2024.06.28 -
[프로그래머스] 나머지가 1이 되는 수 찾기
def solution(n): for i in range(1, n): if n % i == 1: return i else : pass 이 문제.. for문을 돌려서 풀긴 했으나, 시간 복잡도가 O(n)이 된다. 다른 방법이 있는지 사람들의 코드를 보던 중, 딱히 눈에 띄는 코드가 없었다... 나름 괜찮은 풀이인듯하다.
2024.06.28 -
[프로그래머스] 두 정수 사이의 합
def solution(a, b): if a 여기서 a와 b의 대소관계는 모른다고 했기에, 경우를 나누어서 풀어주어야 했다.이 과정에서 a가 더 작고 b가 더 큰 경우 b-1을 해야한다는점!!중요한 포인트였는데, 놓쳤었다.def adder(a, b): return (abs(a-b)+1)*(a+b)//2 그리고 다른 사람들의 코드를 보던 중, 정말 수학적으로 쉽게 풀었던 분이 있었다. 바로 가우스 덧셈 공식을 활용한 것 시간복잡도를 생각했을 때 이 방법이 더 효율적이라고 하니, 기억해두자! https://workshop-code.tistory.com/51 [알고리즘] 가우스의 덧셈 공식목표 가우스 덧셈에 대해 알아보자 가우스 덧셈을 이용한 문제 풀이 가우스 덧셈 등장 배경 천재적인 수학자 독일..
2024.06.26 -
[프로그래머스] x만큼 간격이 있는 n개의 숫자
def solution(x, n): answer = [x*(i+1) for i in range(n)] return answer 종강하고 다시 돌아온 코테 스터디. 오늘은 프로그래머스의 x만큼 간격이 있는 n개의 숫자를 풀었다. 어려운 문제는 아니라 쉽게 풀었다. def number_generator(x, n): # 함수를 완성하세요 return [i for i in range(x, x*n+1, x)]그리고 다른 사람의 코드를 보던 중.. 이 방법이 있었지. 잊고 있었다. 오늘의 문풀 끝.
2024.06.25 -
백준 24511번 : queuestack
https://www.acmicpc.net/problem/24511 import sys from collections import deque n = int(sys.stdin.readline()) list_a = list(map(int, sys.stdin.readline().split())) # 0 1 1 0 (0 = queue, 1 = stack) list_b = list(map(int, sys.stdin.readline().split())) # 1 2 3 4 m = int(sys.stdin.readline()) list_c = list(map(int, sys.stdin.readline().split())) res = deque() for qs in range(n): if list_a[qs] == 0: ..
2024.06.07 -
백준 2346번 : 풍선 터트리기
https://www.acmicpc.net/problem/2346 import sys from collections import deque n = int(sys.stdin.readline()) deq = deque(enumerate(map(int, sys.stdin.readline().split()), start=1)) for _ in range(n): en_deq = deq.popleft() print(en_deq[0], end=' ') if en_deq[1] > 0: deq.rotate(-(en_deq[1] - 1)) else: deq.rotate(-en_deq[1]) 인덱스를 넣어주기 위한 방법 중 리스트의 인덱스를 추출하는 방법이 아닌 다른방법이 무엇이 있을지 고민하며 다른 사람들의 코드를 보던 ..
2024.06.07 -
백준 28279번 : 덱2
https://www.acmicpc.net/problem/28279n = int(input())deque = []for _ in range(n): cmd = list(input().split()) if cmd[0] == '1': deque.insert(0, cmd[1]) elif cmd[0] == '2': deque.append(cmd[1]) elif cmd[0] == '3': if deque: print(deque[0]); del deque[0] else: print(-1) elif cmd[0] == '4': if deque: print(deque[-1]); del deque[-1] else: print(-1) elif ..
2024.06.05