카운팅 정렬을 사용했다.


제공되는 숫자들의 절댓값이 4000을 넘지 않는다.

-4000 <= x <= 4000 

idx는 0부터 시작하니까 4000 을 더해주면 0 ~ 8000이다.

그럼 배열의 length 는 8001.


산술평균은 입력받는 값들을 합해서 N으로 나눠주면 된다.

중앙값은 idx 0 부터 체크하면서 N / 2 번째의 숫자를 확인해주면 된다.

최빈값은 애매하게 2번째로 작은값을 출력을 하라고 한다.

처음에 최빈값이 몇개 나왔는지를 구하고, 2번째로 작은 값을 구해준다.

범위는 간단하게 제일 작은값을 min으로 넣어주고, 가장 큰 값을 max로 넣어서 max - min 해준다.

min과 max를 넣어주는 과정은 최빈값을 구하는 과정에서 list[i] > 0 이면 체크해서 넣어준다.

KMP를 사용해서 풀었고,

LinkedList에 idx값을 담아줬다.



음..


문제의 내용을 적어도 될거라 믿고 적을게요.


1번 문제는 양과 염소가 있는데 먹이가 같다.


먹이를 먹는양은 염소 1마리당 A그램 양 1마리당 B그램 먹고,

둘이 합쳐서 N마리이고 전날 M그램을 먹었다.


입력값이 A B N M으로 주어지고,

염소의 마리수를 구하는 거다.


시간복잡도는 O(N)으로 풀이했다.


2번 문제는 1~100점으로 점수가 돼있고, A B명이 있을 때

A B 각 data들을 곱해서 최대가 나오는 수를 구해라.


즉 A[1]~A[i] * B[1]~B[j]를 하나씩 하나씩 곱하는건데, 하나씩 곱해서 더한값이 가장 큰 수를 구하는거다

1 3 5

5 3 1이면

5 * 5 + 3 * 3 + 1 * 1 이 최댓값이다.


풀이는 정렬해서 풀면 시간초과가 난다.

그래서 1~100이 들어가는 정렬을 만들고 나올때마다 ++해주고, 차례대로 곱해준다.


의사코드로 적어보면

while(d[a]==0) a++

result+=A[a]*B[a];

A[a]--,B[a]--

뭐 이런식으로 구현하면 O(N)이다.


3번문제는 풀었는지 못 풀었는지 기억이 안난다.

근데 문제와 풀이 방식은 기억이 나서 적어본다.


사람들이 줄을 서 있다.

1번째 줄에는 k명

n번째 줄에는 k+n-1만큼 있다.


i번째 사람이 j줄에 있을때 몇 번째만에 k를 구하냐와 k를 못 구하면 -1을 출력한다.


내가 푼 공식은

mink와 maxk를 구하는 거였다.


mink를 구하는 방법은 k가 마지막에 있다고 가정하고, n-1을 i에 빼주고 i를 j로 나누면 mink가 나온다.(근데 이거는 문제가 있는거 같음)

maxk를 구하는 방법은 mink를 하는것처럼 하는데, i번째가 j줄의 시작이라고 가정하고 한다.


반복문을 돌면서 mink와 maxk가 같아지면 답을 출력하는 아이디어다.


4,5,6,7번 문제는 아이디어가 있는데

회식하고 다음날이라 못풀었다. ㅠ 나중에 문제가 뜨면 풀어야지

'IT > 여러가지' 카테고리의 다른 글

1. Docker 설치하기  (0) 2018.04.30
OAuth란?  (0) 2017.12.12
JAVA parseInt valueInt 차이점  (0) 2017.11.16
ksh-code.github.io index.html 생성  (0) 2017.10.23
Typescript를 사용한 React  (0) 2017.10.22

가장 큰 거

String을 그대로 사용하면 문자열 추가중에 시간초과가 남

StringBuilder를 사용하면 해결~


KMP는 더 공부가 필요함(PI를 구하는 쪽을 걍 넘어간듯)


value는 value를 반환

parse는 파싱해서 그거를 그 자료형으로 변환


예 )    '1' = value 49

  "1" = parse 1


'IT > 여러가지' 카테고리의 다른 글

OAuth란?  (0) 2017.12.12
TOPCIT 알고리즘 시험 후기  (0) 2017.11.18
ksh-code.github.io index.html 생성  (0) 2017.10.23
Typescript를 사용한 React  (0) 2017.10.22
역위  (0) 2017.10.17

1번째 풀이와 2번째 풀이가 있다.

1번째 풀이는 시간초과가 난다.

O(MN) = 16억번


2번째 풀이는

O(M)이다.


-1이 나오는 조건은 x가 N보다 크거나 같을때(스왑하는 과정이나 입력값이 이상할때)

정답을 구하는 방법은

앞 자리 즉 x 의 값으로 y 의 값을 찾아가는 형식이다.

M을 계속 더해줌

(tempy!=y&&_lcm==result)의 조건을 안넣어서 계속 틀렸었다.


(tempy!=y&&_lcm==result)를 넣지 않으면 거의다 lcm(M,N)의 값이 뜬다.

일단 문제를 보면 0~9까지의 숫자카드를 1세트로 계속 받고 6 = 9 이다.


그래서 9를 입력받으면 6배열에 ++해주고

for loop을 하면서 배열에 값을 하나씩 빼줬다.

6은 2개씩 빼줌


for문을 while문으로 감싼 이유는 1세트씩 계속 주기위해서.

k-1층의 1~b호 까지의 사람들이 k층 b호에 살아야 된다.

0층 i호에는 i명이 산다.


배열이

1 2 3 4 5

1 3 6 10 15

이런식으로 만들어진다.

위에서 부터 0층 1층 으로 계산했을때

d[i][j] = d[i-1][j] + d[i][j-1] 이다.


그래서 처음 입력받기 전에 초기화해주고 

입력받는 값으로 배열에 대입해서 출력하면 된다.


Facebook Korea에서 진행했다.

Facebook Korea를 처음 가봤다.

Google Campus와 비슷한 느낌으로 카드를 태깅해야 되는거 같다.(Google Campus는 아무나 들어갈 수 있다.)


카카오에서 React를 사용한 걸 처음 알았다.

호환성에 대해 나는 중요하게 생각하지 않았는데, 이제부터 중요하게 생각 해야겠다.


LG에서 TV에 웹OS를 넣는걸 처음 알았다.

오늘 우리집 LG TV에서 오류가 나면서 HTML 코드가 나왔다.


Storybook Driven Development를 사용하는건 React에서 아주 좋은거 같다.

컴포넌트들을 따로 배치해두고 필요할때만 뽑아쓰면 되기 때문이다.


Decorator를 이용해 HOC를 쉽게 관리하는걸 보고 충격받았다.

아직 React를 해보지는 않았지만 저런 디자인패턴은 필요하다고 생각된다.

React는 컴포넌트들을 이용하기 때문에 더욱더 필요하다.



배고파서 샌드위치는 1개로 부족했었다 ㅠㅠ

그리고 자세가 불편해 목이 아팠다.


고생해주신 스태프분들 감사합니다.

'IT > 외부활동' 카테고리의 다른 글

Microsoft Developer Conference 참석  (0) 2017.11.25
JetBrains Night 서울 2017  (0) 2017.11.21
FEConf 참석  (0) 2017.10.22

H * W 호텔에서 N번째 사람이  어디에 들어가는지 구하는 문제.

첫 번째 문제를 푼 아이디어는

(N/H+1)*100+N/H+1

이였다. 

일단 내가 W에 대해 아무것도 작성하지 않은 이유는 굳이 W까지 해서 계산할 필요 없이 나눈값 + 1이 들어가기 때문이다.

근데 이 풀이는 N과 H가 같으면 출력이 잘못된다.


그래서 반복문으로 N에 H를 빼면서 W를 1씩 더해주면서 호수를 구해줬다.


코드를 보는게 이해가 더 쉽게 될 것이다.



+ Recent posts