https://school.programmers.co.kr/learn/courses/30/lessons/92342 양궁을 어떻게 쏠지 여러가지 경우가 나올 텐데 이를 queue에 저장했다가 bfs내에서 현재 과녘을 라이언이 쏘는 경우와 쏘지 않는 경우 각각을 모두 queue에 push 해주었다 . -> 이 방법을 통해서 과녘을 쏘는 경우의 수들을 탐색하고, while문이 종료되는 조건들을 통해서 max_gap을 갱신한다. queue = deque([(0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])]) # count, arrow queue에 현재 과녘과 화살을 쏜 기록인 (count, arrow)를 초기화하여 push한다. if sum(arrow) == n: # while 문 종료 ry..
분류 전체보기
https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 집합을 합친다고 해서 처음엔 단순하게 배열과 배열을 합쳤는데, 이렇게 하면 시간초과가 난다 ! 그래서 찾은 방법이 union-find로 배열과 배열을 합칠 때, 부모 노드 (root node)를 이용해서 부모 노드가 더 작은 쪽으로 가게끔 합쳤다 그리고 각각의 원소가 하나의 집합에 속하는지 확인할 때는 부모노드가 동일한지만 확인해주면 되니까 더 효율적으로 ..
https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 효율성!! 을 보는 문제여서 당연히 브루트포스는 아닐거란 예상은 했지만 그래도 꼭 하지말라고 하면 하고 싶은 법 나만 그래?????? def solution(board, skill): answer = 0 def attack(a, b, c, d, degree): for i in range(a, c+1): for j in range(b, d+1): board[i][j] -= degree def sav..
https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr mbti 점수 계산하는 재미있는 문제이다 처음에 놓친 부분은 매우 비동의가 3점으로 들어가야 하는데 이걸 1점으로 거꾸로 계산했다 레벨 1의 구현문제이다 def solution(survey, choices): answer = '' n = len(choices) type = {'R':0, 'T':0, 'C':0, 'F':0, 'J':0, 'M':0, 'A':0, 'N':0} score = [0, ..
https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 계란치는_법_jpg 2번 과정에서 백트래킹으로 풀어야겠다고 캐치를 할 수 있었다 손에 들고 있는 계란으로 다른 계란 중 하나를 치는데 그게 뭐 바로 옆에 있는 계란일 수도 있고 아닐 수 도 있음 -> 백트래킹 사용해서 계란을 쳤다가 계란을 치기 전으로 다시 back해서 문제를 풀어가야 한다 # https://www.acmicpc.net/problem/16987 n = int(inpu..
https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어려운 문제는 아니지만.. 구현하는데 시간이 1시간정도 걸렸다 흑흑 조건에 따라서 열심히 구현해주면 된다.. 시간 계산할때는 분 먼저 계산하고 시간을 계산하는식으로 했다 이거 이번에 카카오 블라인드에 나왔는데 기억하면 좋을 것 같다 그리고 defaultdict 를 사용하니깐 딕셔너리에 key가 없고 처음일 때도 += 연산자를 사용할 수 있어서 미리 딕셔너리 에러를 피할 수 있다 from colle..
https://www.acmicpc.net/problem/14382 14382번: 숫자세는 양 (Large) 예제 입출력 1번에 대해서, 2 × 0 = 0, 3 × 0 = 0 등등으로 이어지므로, 블리트릭스는 0외에는 다른 숫자를 기록할 수 없을 것이며, 따라서 영원히 잠에 들 수 없다. 예제 입출력 2번의 경우, 1, 2, 3, 4, www.acmicpc.net 실버 4 문제로 어려운 문제는 아니다 그런데 오히려 좀 까다롭다고 느낀건 문자열을 출력할 때 print('Case #'+str(i+1)+": INSOMNIA") 쉼표 (,) 로 변수를 넣으면 공백열이 생긴다는걸 깨달았다 그래서 쉼표가 아니라 + 로 문자열로 만들어서 붙여줘야지 공백열 없이 문제가 원하는대로 출력할 수 있다 나는 딕셔너리 자료형을..
https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 제한 조건에 min(n,m) % 2 == 0 이라고 표시되어 있다 이를 활용해서 바깥쪽 직사각형에서 안쪽 직사각형을 확인한다. 확인하는 순서는 맨 좌측 , 하단, 우측, 상단이다. 그래서 맨 좌측의 지점이 되는 i,i을 시작지점이라고 보고, 좌표와 이때 array[i][i] 의 값을 미리 저장해 둔다. ..