오늘 한 일
알고리즘
물병
import java.util.Scanner;
public class b1052 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
int count;
int result = 0;
while (true) {
count = 0;
int copyN = N;
while (copyN != 0) {
if (copyN % 2 == 1) {
count++;
}
copyN /= 2;
}
if (count <= K) {
break;
}
N++;
result++;
}
System.out.println(result);
}
}
아 이 문제 진짜 어려웠다.. 잡힐 것 같은데 잡히지 않는 기분이라 더 머리아팠다.. 근데 검색해보니 결국 내가 잡으려던 건 허상이었다..
물병을 하나 하나 그려보면서 이 문제는 이진법 계산으로 풀면 되겠다 생각했다. N 을 나머지 연산을 하며 나머지가 1이 나왔을 때 count를 증가시켜주었다. N을 0까지 나눈 뒤 count가 입력 받은 K 값과 비교했을 때 작거나 같은지 확인한다. K 보다 크다면 입력 받았던 N을 1씩 증가시켜 다시 반복문을 실행한다. 이 때 구매해야할 물병 개수인 result를 1 증가시켜준다. 이렇게 반복문을 돌면서 count가 K와 같거나 작다고 나오면 반복문을 빠져나오고 필요한 물병 개수인 result를 출력해준다.
count <= K 를 해준 이유는 문제에서 한 번에 K개를 옮긴다면 count가 K 보다 작다면 물병을 구매 할 필요가 없다고 생각하여서 해주었다. 코드에 대한 피드백을 받았는데 피드백에 대한 대답을 제대로 하지 못했다. 하지만 피드백해주셔서 감사합니다 Hwi
함께 자라기
조직에서 신뢰를 쌓는 데 사용되는 방법으로 `투명성과 공유, 인터랙션` 이라고 한다. 두 명의 디자이너가 각자 광고를 디자인한 것을 디자인이 끝나면 서로의 디자인을 공유하며 피드백을 나누고 인터랙션을 한다. 그런 뒤 상호간의 신뢰 정도를 측정하면 신뢰감이 더 떨어진다고 한다.
여러 개의 디자인을 만들고 그 중 자신이 가장 잘했다고 생각하는 것을 골라 공유할 때도 마찬가지라고 한다. '하나 공유'나 '최고 공유'가 우리가 흔히하는 공유 방식이다. 하지만 이 방식을 하고 나면 신뢰가 더 떨어진다. 왜냐하면 이 걸 공유하는 자리에서 우리는 기대감보다 불안감을 가지게 될 것이다. 상대가 이걸 보고 안 좋게 생각한다면 어떡하지 라는 생각을 하게 되고 또 어떻게 대응할지도 생각하게 된다. 또한 내가 한 말을 듣고 상대방이 싫어할까 걱정하기도 한다.
책에서 복수 공유를 하면 부정적 피드백을 수용하려는 마음도 더 많아지게 된다고 한다. 여러 개를 공유하게 되면 상대적으로 더 많은 이야기를 할 수 있어 말하는 사람도 편하고, 듣는 사람도 마음이 더 편하다고 한다. 나는 지금까지 과제를 공유할 때 하나 공유와 최고 공유의 방식으로 공유하고 있었다. 그러다보니 상대방이 어떻게 말할까 걱정이 많았고, 실제로 피드백도 많이 받지 못했다. 그렇다고 지금 여기서 말하는 복수 공유에 대해 어떤 방안이 떠오르진 않지만 신뢰는 신뢰하자라고 마음 먹는다고 곧장 신뢰할 수 있게 되는 게 아니라는 걸 알게 되었다. 부족하더라도 좀 더 공유하면서 상호 간의 인터랙션이 많아지게 되면 신뢰도 차근차근 쌓아질 거라는 생각이 든다.
더 시스템
인상 깊은 내용을 회고에 써야겠다. 성공을 향해 나아갈 때, 자신의 욕구와 다른 사람의 바람 사이에서 균형을 맞추고자 노력한다는 내용이다. 그 균형에 대해 고민한다면 책의 저자는 이기적인 사람이 되는 게 최상의 선택이라고 한다. 동료의 마지막 도넛을 낚아채는 행동은 이기적인 것보다 옹졸한 행동이다. 이상적인 이기심은 시간을 들여 운동하고, 올바른 식사를 하고, 경력을 쌓으면서도 가족, 친구들과 즐거운 시간을 보내는 것이라고 한다.
오래 전부터 이 균형에 대한 해답을 찾지 못했었는데 어떻게 균형을 잡아야 할 지 방향을 알 것 같기도 하다.
삽입 정렬
삽입 정렬은 선택 정렬과 다른 점이라면 필요할 때만 위치를 바꾸는 것이다. 선택 정렬은 현재 데이터의 상태와 상관없이 무조건 비교하고 위치를 바꾸는 반면 삽입 정렬은 그렇지 않다. 삽입 정렬의 시간 복잡도는 선택 정렬과 비슷하지만 리스트의 데이터가 거의 정렬되어 있는 상태라면 매우 빠르게 동작한다.