N = int(input()) res = 2 #초기 n = 1일 때 분할 면은 2임 add = 2 #초기 증가 수는 2 cnt = 0 # cnt == N-1이 되면 끝 odd = False while(cnt != N-1): res = res + add cnt += 1 if odd == True: #더하는 값이 홀수일 때 두번 더해줬으니까 다음 더할 값에는 +=1헤주고 넘어감 odd = False add += 1 continue if add % 2 == 1: #더하는 값이 홀수이면 다음거에 +=1 안해줌 odd = True # True로 바꿔주고 continue add += 1 #더하는 값이 짝수이면 다음 더할 값에 +=1 print(res) N이 1일 때 최대 분할면은 2 N이 2일 때 최대 분할면은 4..
N = int(input()) #no, no 중복제외하기 위해 set w = set(input()for _ in range(N)) words = list(w) # 사전 순으로 정렬 words.sort() # print(words) # 길이 순으로 정렬 words.sort(key=len) # print(words) for i in range(len(words)): print(words[i]) 처음에는 문제에 나와있는 대로 1.길이가 짧은 순 2. 사전 순 으로 풀어보려고 했는데 마음대로 안됐다. words.sort(key=len) 한다음 words.sort()이렇게 하면 길이 순으로 한게 물거품이 된다. 그래서 그냥 먼저 사전순으로 정렬하고 그것을 다시 길이순으로 정렬을 했다. 그랬더니 되네? 그리고 예제..
n = int(input()) money = 0 if n // 5 > 0: money += n//5 n %= 5 if n % 2 == 1: #5로 나눈 나머지가 홀수이면 5로 나눈 몫을 하나 줄이고 나머지에 5를 더함 money -= 1 n += 5 if n // 2 > 0: money += n//2 n %= 2 if n != 0: print(-1) else: print(money) 단순하게 처음엔 5로 나누고 몫을 따로 저장해준다음 그 나머지값을 2로 나눈 몫을 5로 나눈 몫과 합한 값을 출력하면 되는 줄 알았다. 그런데 13을 5로 나누면 몫은 2지만 나머지가 3이라서 2로 나머지가 0으로 만들 수가 없었다. 그런데 예제를 보면 13은 출력값이 5이다. 그래서 5로 나눴을 때 나머지가 홀수이면 2로 ..
원의 방정식 에서 어떤 점을 넣었을 때 반지름^2 보다 작으면 원안에 존재 한다는 점을 이용했다. 시작점 또는 끝점이 원 안에 존재 한다면 cnt += 1을 해준다. 동시에 temp도 += 1 한다. 만약 시작점과 끝점이 같은 원 안에 존재한다면 temp가 2일 것 이므로 cnt -= 2를 해주었다. import sys input = sys.stdin.readline T = int(input()) # 테케 # 행성계 진입/이탈 횟수를 최소화 for tc in range(T): x1, y1, x2, y2 = map(int, input().split()) n = int(input()) # 행성계의 개수 cnt = 0 for i in range(n): temp = 0 cx, cy, r = map(int, in..
n = int(input()) #딕셔너리로 받아서 value를 enter면 1을 넣고 leave면 0으로 바꾼다. #최종으로 1이 있는 키 출력 room = {} for tc in range(1,n+1): name,value = input().split() if value == 'enter': room[name] = 1 else: room[name] = 0 res = [] for key,value in room.items(): if value == 1: #사전 순의 역순으로 한 줄에 한 명씩 출력 res.append(key) res.sort(reverse=True) for i in range(len(res)): print(res[i]) 저번에 풀었던 9375_패션왕 신해빈에서 딕셔너리를 이용해 풀었던 것..
N = int(input()) A = map(int, input().split()) B = map(int,input().split()) A=sorted(A) B=sorted(B,reverse=True) res = 0 for i in range(N): res += A[i]*B[i] print(res) 단순하게 생각했다. 첫 번째 케이스는 오름차순으로 정렬해서 각각 곱해보는 것이다. A : 1 2 3 4 B : 5 6 7 8 이라고 하면 답은 70 두 번째 케이스는 하나는 오름차순 하나는 내림차순으로 해서 곱해보는 것이다. A : 1 2 3 4 B : 8 7 6 5 이라고 하면 답은 60 따라서 최솟값을 구하려면 한열은 오름차순 다른 한 열은 내림차순으로 곱해서 더해주면 된다.
처음에 이런식으로 트리로 생각해서 그림을 그려서 했는데, 자식노드만 트리에 넣어주니까 어떻게 해야할지 몰랐다. 그래서 이런식으로 그림을 바꿔 그렸다. 연결되어있는 간선의 수를 찾으면 되므로 tree라는 리스트에 해당 인덱스의 노드가 만나는 노드들을 넣어주었다. [[], [2, 3], [1, 7, 8, 9], [1], [5, 6], [4], [4], [2], [2], [2]] 그래서 dfs를 이용해서 인접한노드들을 방문했다고 체크하고 dfs함수에 그 노드를 넣었다. 함수를 넘길 때 동시에 cnt를 인자로 넣어서 얼마나 이동을 했는지 세주었고, 찾고자 하는 값 b와 같은 노드를 만난다면 result에 cnt값을 넣어주고 return을 시켰다. 서로 다른 트리에 노드가 있어서 연결되어있지 않을 때는 -1을 출..
처음에 생각한 코드 from math import gcd def lcm(x,y): return x*y // gcd(x,y) T = int(input()) for tc in range(1,T+1): M,N,x, y = map(int, input().split()) result = -1 # x에 맞춰서 나머지 x일 때를 시작부터 M만큼 주기로 반복 #나머지가 x인 수들만 N으로 나눠서 나머지가 y인것 찾아냄 # 10 12 3 9 일 때 3,13,23,33 에서 12로 나눴을 때 9인것 찾아냄 for num in range(x,lcm(N,M)+1,M): if num % N == y: result = num break print(result) M를 기준으로 나머지가 x 인 것만을 최소 공배수까지 반복문을 돌려보..
- Total
- Today
- Yesterday
- 트리
- django
- 비동기패턴
- git
- 안드로이드스튜디오
- DOM
- 알고리즘
- 세션 스토리지
- 싸피
- commit되돌리기
- vue
- Python
- SQL
- 프로그래머스
- javascript
- SWEA
- AWS
- 위클리챌린지2주차
- 배포
- SSAFY퇴소
- N과M
- 백준
- 파이썬
- splide
- Pyhton
- 독학
- vue.js
- 자바
- SSAFY
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |