백준 썸네일형 리스트형 백준 1002 터렛 파이썬 [개인적인 풀이 과정] https://www.acmicpc.net/problem/1002 이 문제는 기하학에 대한 문제다. 고1 때 배웠던 원의방정식 부분과 피타고라스의 정리를 기본적으로 알고 있어야 접근하기 좋다. 처음에 좌표가 겹칠경우(거리0) r1과 r2가 같으면 -1을 출력하고, 다르면 0을 출력하는 것, 좌표가 겹치지 않을경우(거리0이아님) 두 원은 만나지 않거나, 한점에서 만나거나, 2점에서 만난다는 아이디어가 있어 만나지 않을 경우, 한점에서 만날경우, 2점에서 만날경우에 대한 조건을 각각 생각하며 여러번 시도하고 test case를 넣어봤지만 결과는 계속 틀렸다고 나왔다. 전체의 경우를 정확하게 파악 못했거나, 부분적인 조건이 잘못되었거나, 전체에서 부분을 뺀 범위를 잘못설정하고 있다고 판단했다. 문제에 대한 해.. 더보기 백준 9012 괄호 파이썬 [개인적인 풀이 과정] 입력으로 주어진 괄호 문자열이 VPS일 경우 "YES", 아닐 경우 "No"를 출력해야한다. 문자열에 주어진 여는 괄호"("가 먼저 나와야 하고 후에 개수에 맞춰서 닫혀야 한다. 특정 위치를 기점으로 닫는괄호가 더 많이 있을 경우, 문자열을 모두 셀 때 여는 괄호 수가 닫는 괄호 수 보다 많은 경우는 NO를 출력하고 위 상황을 제외하고 수가 맞으면 YES를 출력하면된다. 스택에 관련된 문제지만 스택으로 풀 필요 없이 여는 괄호일 때 cnt를 1씩 증가, 닫는 괄호일 때 cnt를 1씩 감소해주면 풀 수 있다. (반대로 여는 괄호일 때 감소, 닫는 괄호일 때 증가를 하고, 조건문에 cnt에 해당하는 조건을 반대로 해줘도 가능하다.) import sys input = sys.stdin.readline t = .. 더보기 백준 18258 큐 2 파이썬 [개인적인 풀이 과정] https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 전에 풀었던 10828 스택 문제와 상당히 유사하다. https://www.acmicpc.net/problem/10828 push, pop, size, empty 까지는 동일하고, front와 back이 추가 되었는데 스택에서는 top과 비슷한 개념이 앞 뒤에 달려있다고 봐도 될 것 같다. import sys input = sys.stdin.readline n = int(.. 더보기 백준 1021 회전하는 큐 파이썬 [개인적인 풀이 과정] 첫 번째 입력으로 큐의 크기와 뽑아내려는 수의 개수 두 번째 입력으로 뽑아내려 하는 수의 위치가 순서대로 주어진다. 문제는 이해가 되고, 두 번째 줄에 입력되는 값이 큐의 위치에서 중간보다 앞에 있으면 좌로이동(2번 연산) 뒤에 있으면 우로이동(3번 연산)을 하는 것이 2, 3번 연산의 최솟값이 될 것 이라는 것은 알았다. 기존에 알던 리스트로 풀려고 했는데 도저히 2번과 3번 연산을 어떻게 해야 리스트에서 구현이 가능할까? 생각하다가 리스트의 0번째 인덱스를 del로 지우기 전에 append하고, 원래 있던 0번째 인덱스를 del로 지우면 2번 연산이 가능하겠다 생각했지만 3번 연산은 어떻게 해야할지 엄두가 안났다. append를 앞에 할수도 없고, 하고나서 정렬을 하는 것도 순서가 안맞아서 안되기 때.. 더보기 백준 2839 설탕 배달 [지극히 개인적인 풀이 과정] https://guku.tistory.com/24 백준 2839 설탕 배달 [지극히 개인적인 풀이 과정] 실패의 연속 상근이의 귀찮음을 풀어주기 위해 문제를 풀어본다. 5kg만으로 가능한 경우, > 5로 나눴을 때 딱 나누어 떨어진다.(나머지가 0이다) > input값을 5로 나눠준다. 5kg으로 안되면 5kg과 3kg을 섞는 경우 > 5 guku.tistory.com 위는 기존의 풀이 시도이다. 하다가 실패를 반복했던 문제... 여러번 시도하고 안되서 다시 풀어보자고 한 문제이다. 예전에 풀던 것은 싹 지우고 처음부터 다시 시작해본다. 입력값이 5의 배수일 경우 입력값을 5로 나눈 것이 출력값이 된다.(5나 0으로 끝나는 경우) 3이상 30 이하의 값에서 -1을 출력하는 경우는 4, 7밖에 없다. 앞으.. 더보기 백준 파이썬 1157 단어 공부 [개인적인 풀이 과정] 중복되는 단어를 걸러주고 정렬해주는 set을 이용하여 word에 set의 인덱스에 들어있는 값이 몇개 들어있는 지 센다. 이후 들어있는 개수의 최대값이 여러개면 '?'를 출력한다. 최대값이 하나인 경우 set되어있는 리스트의 max값에 해당되는 index번째의 값을 출력한다. word = input().upper() li = list(set(word)) o = [] for i in li: o.append(word.count(i)) if o.count(max(o)) > 1: print('?') else: max_index = o.index(max(o)) print(li[max_index]) set의 특징 중복을 허용하지 않는다. 순서가 없다(Unordered). 만약 set('qweqweqwe')을 할 경.. 더보기 백준 11050 이항 계수 1 파이썬 [개인적인 풀이 과정] 문제만 봐서는 이항 계수가 뭔지 몰랐다. 그룹 스터디 중에 한 분이 알려주신 문제라 알게 되었다. 예전에 고등학교 시절 배웠던 조합 nCr이 이항 계수의 다른 표기 방법이라고 한다. 따라서 factorial에 대한 함수를 정의 해주거나 math를 임포트 해주면 원하는 값을 바로 출력할 수 있다. import math N, K = map(int, input().split()) a = math.factorial(N) // (math.factorial(N-K) * math.factorial(K)) print(a) 더보기 백준 1010 다리 놓기 [개인적인 풀이 과정] M과 N이 같을 경우 1, N이 1일 경우 M랑 같은 수 출력, 그 외에 N과M이 입력될 경우 (N에 M-1이 입력된 경우) + (N-1에 M-1이 입력된 경우)와 같다. 이는 실제로 사이트를 그려보면 나오는데 2 2가 입력될 때 갈 수 있는 경우의 수는 1개이며 2 3이 입력될 경우 기존 경우(2 2입력)가 겹치지 않아야 되기 때문에 맨 위의 사이트를 위에 고정시킨 상태로 아래 사이트를 움직일 수 있는 경우의 수와 같기 때문이다. 규칙은 찾았는데 이것을 코드로 어떻게 표현할지가 막막하다. 피보나치 수열 관련해서 나왔을 때랑 비슷한 방법으로 풀면 될 것 같은데 제대로 숙지 된 내용이 아니라 스스로 구현은 하지 못했다. https://li-fo.tistory.com/60 huibum님의 블로그를 참조하여 .. 더보기 이전 1 2 다음