본문 바로가기

algorithm

[백준OJ] #2875 ; 대회 or 인턴 [해결 IDEA] - 여학생은 2명씩 남학생은 1명씩 빠지게 된다 - 팀을 만들다 남은 인원수가 인턴수보다 작으면 안된다 (=종료조건) [CODE] import sys input = sys.stdin.readline def makeTeam(n,m,k): team=0 while True: n-=2 m-=1 # 인원수에서 빼주면서,team 을 만들어 if n
[백준OJ] #1946 ; 신입사원 [해결 IDEA] - 여러번의 fail 끝에 해결했다. - dictionary로 만들어줘서, key값 sort를 해주면 위에꺼 (서류가 현 index보다 등수 높음) 랑만 비교해 주면 될줄 알았다. - 하지만, 예를들어서 [[1,6],[2,4],[3,7],[4,1],[5,3],[6,2],[7,5]]에서 [6,2]는 [4,1]보다 둘다 등수가 낮기 때문에 떨어지는 경우를 생각해, 전반적인 비교가 필요했고, 해결방안으로, 마지막으로 신입사원으로 뽑힌 인덱스랑 계속 비교해줬다. [그림 설명] [CODE] import sys def pickme(arr): pick = 1 new_list = list(map(list, zip(*arr))) # 입력 받은 리스트를 dictionary로 한후 key값에 맞게 sort..
[백준OJ] #1003 ; 피보나치 함수 (success) #define _CRT_SECURE_NO_WARNINGS // 백준 1003 // 피보나치 함수 #include int dp[41]; //0 int fibo(int n) { if (n 그냥 반환 else return dp[n] = fibo(n - 1) + fibo(n - 2); } int main( ) { int m; scanf("%d", &m); while (m-- > 0) { int x; scanf("%d", &x); if (x == 0) { printf("%d %d\n", 1, 0); } else if (x == 1) { printf("%d %d\n", 0, 1); } else { fibo(x); printf("%d %d\n", dp[x - 1], dp[x]); } } return 0; } * dy..
[백준OJ] #1002 ; 터렛 (success) #define _CRT_SECURE_NO_WARNINGS #include #include //원의 교점 //반지름 int main() { int n,ax,ay,bx,by,ar,br; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d %d %d %d %d %d", &ax, &ay, &ar, &bx, &by, &br); double d = sqrt(pow(bx - ax, 2) + pow(by - ay, 2)); if (ax == bx && ay == by) { if (ar == br) printf("-1\n"); else printf("0\n"); } else { if (d == ar + br || d==abs(ar-br)) printf("1\n"); el..
[백준OJ] #1002 ; 터렛 #define _CRT_SECURE_NO_WARNINGS #include #include //원의 교점 //반지름 int main() { int n,ax,ay,bx,by,ar,br; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d %d %d %d %d %d", &ax, &ay, &ar, &bx, &by, &br); double d = sqrt(pow(bx - ax, 2) + pow(by - ay, 2)); if (ax == bx && ay == by) { if (ar == br) printf("-1\n"); else printf("0\n"); } else { if (d == ar + br) printf("1\n"); else if (d < ar + b..
[백준OJ] #1003 ; 피보나치 함수 #define _CRT_SECURE_NO_WARNINGS #include /*피노나치 수열 / 1 1 2 3 5 8 ... / fibo(3) = fibo(2) + fibo(1) = fibo(0) + fibo(1) + fibo(1) / fibo(4) = fibo(3) + fibo(2) = fibo(2) + fibo(1) + fibo(1) + fibo(0) = fibo(1) + fibo(0) + fibo(1) + fibo(1) + fibo(0) = fibo(1)*3 + fibo(0)*2 / fibo(1) -> retrun 1 하면 됨. */ int cntz = 0, cnto = 0; int fibo(int n) { if (n == 0) { return 0; cntz++; } else if (n == 1) {..