[JAVA] 백준 14649 : 문홍안
·
백준/Java
백준 14649 : 문홍안문제 설명밟았을 때 B->R->G->B 규칙으로 색깔이 변하는 100개의 돌로 이루어진 징검다리를 N명의 비서가 돌의 번호(idx)에 위치하여 좌 혹은 우로 이동합니다.최종적으로 총 재산 P를 B, R, G 색상의 갯수로 배분한 결과를 소수점 둘째 자리까지 출력합니다.풀이 방법핵심은 idx의 위치에서 밟기 시작하는 돌의 번호입니다.idx에서 출발하는 비서는 L방향으로 이동하면 idx-1부터, R방향으로 이동하면 idx+1부터 밟아 색깔을 바꿀 수 있습니다.하지만 0번째 idx부터 1번째 칸으로 생각하므로, L방향으로 이동하면 Idx-2부터, R방향으로 이동하면 idx부터 밟아 색깔을 바꿉니다.모듈러(%) 계산을 이용해 돌을 밟은 횟수를 B,R,G 세가지 경우로 축소합니다.prin..
[JAVA] 백준 21396 : 이진수 더하기
·
백준/Java
백준 21396 : 이진수 더하기문제 설명테스트 수 T회N개의 수 v[i]를 입력으로 받아올림이 없는 이진수 덧셈의 결과가 x인 갯수를 구하는 문제입니다.입력값이 크므로 long 자료형을 사용해야합니다. (35%에서 틀렸을 경우 참고)풀이 방법핵심은 XOR 연산의 특징을 이용하는 것입니다.받아올림이 없는 이진수 덧셈 : 1(2) + 1(2) = 0(2) , 1(2) + 0(2) = 1(2), 0(2) + 0(2) = 0(2)즉, 두개의 비트가 다르면 1, 같으면 0을 출력하는 XOR연산과 동일합니다.임의의 두 수 a, b가 있다고 할 때, a ^ b = x라면, 이는 b = a ^ x와 동일합니다.즉, 어떤 수 a가 존재할 때 a ^ x가 집합에 존재한다면 (a, a^x)는 조건을 만족하는 쌍입니다.중복..
그리디 알고리즘 with 백준 11047
·
백준/알고리즘
11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 알고리즘 분류 : 그리디 알고리즘 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법 그리디 알고리즘의 조건 1. 탐욕적 선택 속성 (Greedy Choice Property) : 앞의 선택이 이후에 영향을 주지 않는다. 2. 최적 부분 구조 (Optimal Substructure) : 문제에 대한 최종 해결 방법은 부분 문제에 대한 최적 문제 해결 방법으로 구성된..
[Python] 백준 1620 나는야 포켓몬 마스터 이다솜 : isdigit()
·
백준/Python
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 백준 문제 풀면서 가장 길이가 길었던 문제 ㅋㅋㅋㅋ(사실 몇 문제 안 풀긴함) 평소 백준을 자바만으로 풀다 파이썬으로 갈아타고 나서 편하다는 느낌이 물씬 나는 중이다. 그중 편하다는 느낌으로 드는 점 중 하나인 isdigit()를 사용하면서 느꼈다. 파이썬은 자바와는 달리 input받는 데이터의 자료형이 무엇인지 전혀 신경쓰지 않는다. 다만 받더라도 기본으로 strin..
[Python] 백준 11723 집합 : 런타임 에러 (KeyError) 경우
·
백준/Python
https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 나는 자바로 문제를 풀다가 코드가 너무 길어지는 거 같아 파이썬으로 하루 공부하고 갈아탔다. 백준 문제 중 11723번 집합을 풀다 3번의 런타임 에러 KeyError로 인해 뭐가 문제지? 하며 keyerror에 대해 찾다가 도통 모르겠어서 그냥 집합문제를 파이썬으로 푸신 분 코드를 찾았다. 나와의 차이점이라면 Set.remove(x)와 Set.discard(x)가 다르다는 점이다. Set.remove(x)의 경우 Set에 x가 없..
매개 변수 탐색(Parametric Search)
·
백준/알고리즘
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 백준 1654: 랜선 자르기 문제를 풀다가 어떻게 풀지 막막해서 알고리즘 분류를 봤더니 매개 변수 탐색이 있어 찾아보았다. 여러 블로그에서 도움을 얻어 이를 바탕으로 내가 이해한 방식으로 작성하고자 한다. (내가 이해한 것이니 타인이 보면 전혀 이해가 안 되는게 당연하다.) 매개변수 탐색을 하기위해 필요한 것. 내가 얻고 싶은 최소값인 시작값과 내가 얻고자 하는 최대값..