일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SSAFY
- SWEA
- UML
- 정처기
- 삼성 청년 SW 아카데미
- dfs
- 삼성 청년 sw아카데미
- 코딩
- 프리코스
- 비전공자
- 우테코 7기
- 취뽀
- 코딩테스트
- 파이썬
- 개발자
- 삼성
- 삼성 부트캠프
- 싸피
- 13기
- 백준
- 백준 2003
- 우테코 프리코스
- 싸피 13기
- 마이스터고
- 정보처리기사
- 삼성청년SW아카데미
- 우테코
- 부트캠프
- 디자인패턴
- 코테
- Today
- Total
목록파이썬 (60)
룰루코딩

문제솔루션li = [int(input()) for _ in range(9)]for i in li: for j in li: if (sum(li)-i-j)==100: num1, num2 = i, j break li.remove(num1)li.remove(num2)for i in li: print(i)깨달은 점브루트포스 문제인데 7번 for문을 돌려야하나 했는데 반대로 생각해야했다!!for i in li: for j in li: if (sum(li)-i-j)==100:이렇게 총합에서 두개의 값을 뺐을때 100이 되는 경우를 찾으면 되는 브루트포스 문제였다. 또한 처음에는 if문 안에 remove를 넣었는데 va..

문제솔루션from collections import dequedx=[0,1,0,-1]dy=[1,0,-1,0]N,M = map(int,input().split())A= [[0]*M for _ in range(N)]visited = [[False]* M for _ in range(N)]for i in range(N): numbers = list(input()) for j in range(M): A[i][j] = int(numbers[j])def BFS(i,j): queue = deque() queue.append((i,j)) visited[i][j]=True while queue: now = queue.popleft() for k ..

문제솔루션import sysinput = sys.stdin.readlinesys.setrecursionlimit(10000)N,M = map(int,input().split())A = [[] for _ in range(N+1)]visited = [False] * (N+1)arrive= Falsedef DFS(now,depth): global arrive if depth ==5: arrive=True return visited[now]=True for i in A[now]: if not visited[i]: DFS(i,depth+1) visited[now]=Falsefor _ in range(M): a,b = map(..

문제솔루션import syssys.setrecursionlimit(10000)input = sys.stdin.readlinen,m = map(int,input().split())A = [[] for _ in range(n+1)]visited = [False] * (n+1)def DFS(v): visited[v] = True for i in A[v]: if not visited[i]: DFS(i) for _ in range(m): u,v = map(int,input().split()) A[u].append(v) A[v].append(u) count=0for i in range(1,n+1): if not visited[..

문제솔루션T = int(input())for _ in range(T): A, B = map(int, input().split()) result = A*B while B>0: A,B = B, A%B print(result//A) 깨달은 점이 문제는 유클리드 알고리즘을 사용해야 풀 수 있다!최소공배수는 두 수의 곱을 최대공약수로 나눈 값으로 계산한다. 여기서 최대공약수를 유클리드 호제법을 이용해야한다.while B > 0: A, B = B, A % B 최대공약수를 계산하는 식이다. 최대공약수를 이용해서 최소공배수를 구하면 된다.

문제솔루션li = list(map(int, input().split()))li.sort()a, b, c = liif a + b 깨달은 점삼각형의 조건에는 가장 긴변이 나머지 두변의 합보다 작아야 하는 조건이 있다.그 조건을 이용해 조건에 맞지 않을 경우 가장 긴변이 두 변의 합보다 -1만큼 만들어주면 둘레가 가장 큰 삼각형이 되는것이다.

문제솔루션chess = [input() for _ in range(8)]cnt = 0for i in range(8): for j in range(8): if i%2 == j%2 and chess[i][j] == 'F': cnt += 1print(cnt)깨달은 점체스판 모양을 보았을때 먼저 8x8배열로 만들어 준 후하얀칸이 있을때의 규칙을 찾아야한다. 체스판은 좌표 (i, j)에서둘 중 하나가 짝수, 하나가 홀수면 검은색,둘 다 짝수이거나 홀수이면 하얀색이다.이 규칙을 이용해 코드를 짜면 금방 풀 수 있다. if i%2 == j%2 and chess[i][j] == 'F': i%2 == j%2 : 하얀칸일 경우chess[i][j] == 'F': F가 있을..

문제솔루션n = int(input())stack=[]cur=1ans=[]for _ in range(n): num = int(input()) while cur 0: for i in ans: print(i)깨달은 점먼저 스택구조를 이해하고 있어야 하는 문제다.스택은 LIFO특성을 가지고 있으며 Last in First out 로 제일 나중에 들어간 자료가 제일 먼저 나오는 것이다. 임의의 수열이 정해졌을때 그 수열을 스택을 이용해 만들 수 있는지를 묻는 문제이다.예시를 이해해보면8개의 수가 든 수열 [ 4, 3, 6, 8, 7, 5, 2, 1 ]을 스택을 이용해 만들어보자.stack = [1] -> push +stack = [1, 2] -> push +stack = [1..