카테고리 없음

24/3/31 알고리즘(1)

한지지우우 2024. 3. 31. 14:21

2차원으로 만들기

내풀이

//뭐 일단 최종적으로 만들넘의 배열길이를 만들어보고 배열을 요소로 갖는 배열을 만들어본다.

이제 넘리스트를 반복을 돌리는데 행과 열에 해당하는 인덱스를 가질수 있도록 조치한다. 그리고 넣어주면 끝

다른풀이

//아이고 맞네 스플라이스 쓰면 배열로 끄집어 내주고 자동으로 앞에 비워주는 구나 캬 좋은데?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A로 B 만들기

내풀이

//깔끔하쥬? 걍 둘다 사전식으로 정렬했을때 같으면 되쥬? 배열일때는 동일한지 비교가 안되니까 문자열로 다시 바꿔

주는 센스 지리쥬? 마지막에 NUMBER로 똭

다른사람 풀이

//호호 일단 다 배열로 바꾸고 에프터의 요소가 비포어에 있으면 빼주면서 트루로 취급해주고 저러면 필터링에 이유는 있나?
//어쨌든 그래가지고 비포르가 빈배열이 되는지를 확인하는구먼 아이디어 괜찮군

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

모스부호(1)

내풀이

//이제 뭐 arr로 만들어주고 그 모스부호가 나타내는 알파벳 반환해주면 끝

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

k의 개수

내풀이

//배열의 길이는 뭐 아이하고 제이 사이만큼이고 그안에 값은 아이부터시작해서 인덱스만큼 커지니까 요래 만들고

//reduce한번돌려서 요소들을 문자열로 만들면서 다 더해버리고 이제 그 문자열에서 자리하나하나 다 확인해서

//해당 요소가 몇개 들어 있는지 확인

다른풀이

//와 이건 진짜 매서드의 활용도가 지린다. 캬 split으로 드러내면서 그 전체 나눠진요소의 개수에서 1뺀게

원래 k가 들어있던 곳이라는 방식 와 지린다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

팩토리얼

내풀이

//내가 짠 코드지만 약간 한계가 있는듯 일단 10팩토리얼보다 큰값이 예제에 없으니까 arr의 크기를 10으로 한정

//map으로 짠 새로운 배열은 각 요소의 팩토리얼을 담을 예정 그 배열에대해서 reduce를 돌려서 n보다 작은 팩토리얼이

//무엇인지 찾아내고 acc에 저장 이제 n을 팩토리얼이 넘어가는 순간부터는 저장안하니까 n보다 작으면서 가장 큰팩토리얼의 인덱스+1을 기록함 끝

다른풀이

//와 이거 멋지다. 포문을 이렇게도 쓰는구나 무한 포문이네 리턴 나올때까지? 와우 좋은데? 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

숨어있는 숫자의 덧셈(2)

내풀이

//정규식을 써서 숫자가 아닌 색히들을 뽑아버리면서 숫자로만 이루어진 배열을 만든다. 이렇게 하는게 두자리수이상의

//숫자 건져내는데 용이한거 가틈 그렇게 해서 숫자들을 몽창 더하면 끝

베스트풀이

//정규식을 안쓴것도 좋다. 넘버인지 확인하고 맞으면 문자열로 취급해서 넣어주고 아니면 빈공간 만들어서 넣어줘서

//숫자의 자리수까지 고려하는 전략 좋다. 좋군

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

가까운 수

내풀이

// 일단 배열이 크기순이라는 말이 없응께 sort써서 오름차순으로 해주고 이제 reduce를 쓰고 안에서 현재값과

//과거값들중 n 과의 차이가 작은것을 축적하면 끝

다른 풀이

//map함수로 요소가 배열인 애를 만드시는구먼 그리고 n과의 차이가 작은넘들로 sort해서 가장작은애가 가장 앞에 오게 하셨구먼 좋구먼

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

한 번만 등장한 문자

내풀이

//일단 문자열을 배열로 만들어서 reduce를 돌린다. 이제 객체를 만들껀데 객체에 해당 요소를 키로갖는지 여부를 확인하//고 있으면 뭐 1증가시키고 없으면 1로 초기화 해주는 로직을 만든다. 

//이제 해당 오브젝트의 키와 벨류에 따르는 배열을 만들어주고

//밸류의 배열에 맵을 돌려서 필터를 할껄 그랬구먼 해당값이 1개뿐인 요소인지 확인해서 해당인덱스에 해당하는 keys를

//알아내고 그걸사전순으로 정렬하고 합쳐주면 끝

감탄이 나온다.

//아니 지렸다. 걍 마지막 인덱스하고 처음인덱스하고 같기만 하면 하나밖에 없는애구나 와....

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

진료 순서 정하기

내풀이

//일단 순서대로 줄지우기위해 별도의 배열을 만들고 이제 본 배열에 해당하는 요소가 순서대로 만든 배열에서 몇번째 인덱스인지 확인되면 거기에 1더한게 번호순이니까 고렇게 하면 됨

베스트 풀이

//이거 좋네 미리 인덱스와 요소를 묶는 배열안에 배열을 만드는 구나 빈배열 하나 새로 만들고 이제 순서대로 맞춘 그녀석이 몇번 순위인지 확인해서 result에 채워주면 끝

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

7의 개수

내풀이

//일단 다 문자열로 합쳐버리고 그문자열을 배열로 만들어서 배열 매서드 reduce돌려서 그 하나하나가 7이면 카운트 늘려//카운트 반환

베스트 풀이

//아 이거 잊고 있었다. 걍 7 split으로 나눠준 배열 요소 갯수에서 1빼주면 7의 개수였지 맞아 아 그리고 요소가 숫자여도

//join으로 문자열 하나로 만들수 있구나 ... 난 바보야

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

컨트롤 제트

내풀이

//스페이스로 구분해서 배열 만들고 배열 매서드를 만드는데 이제 Z이면 배열에서 가장 뒤에꺼를 빼주고

//아니면 cur을 더해준다. reduce한번 더써서 요소들이 문자열타입이니까 숫자형으로 바꾸고 더해주면 끝

다른풀이

//z면 slice를 써서 원래 배열에서 맨뒤껄 잘라내 버리는 구먼 아니면 추가해주고 map(Number)이런식으로도

//형변환이 가능하구먼 좋네

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

이진수 더하기

내풀이

//진수 변경 매서드 없이 할생각하니까 아찔함 ㅋㅋㅋ

//십진법으로 빠구는거 없이 2진법으로 걍 계산 하셨구먼 좋네

//각자리가 몇이냐에 따라 올리수는 수를 조절하여 그자체로 계산하셨네 굳

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

소인수분해

내풀이

//아 이중 반복문 쓸때마다 골치아프네 첫 포문에서 걍 일단 약수들을 모두 담는다.

//그걸 담은 배열에서 필터링을 하는데 그 배열이 요소는 1과 자기 자신밖에 약수가 없어야 되니까

//item을 1부터 item이하까지 쭉 나머지가 있는지 확인하면서 약수의 개수를 확인해준다.

//이제 약수가 1 한개밖에 없다면 소인수이므로 true로 해주고 1이상이면 소인수가 아니므로 false로 한다.

베스트 풀이

//와일문을 돌리는구먼 한번만? 아하 그래서 식을 보니까 약수들을 찾는구먼 아하 새로운 n을 이미 찾은 소인수로

나눠버린 애로 대체하는 구나 아하 이러면 약수를 하나씩 걷어낼수 있구나 아하...

//그리고 set을 통해서 동일한 애는 걷어주면 되고 아하 캬 아이디어 좋다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

잘라서 배열로 저장하기

내풀이

//일단 문자열을 다루기 쉽게 배열형태로 만들고 // 이제 포문으로 순회를 돌며 앞에 잘라서 배열에 넣어주기 반복하면 끝

베스트 풀이

//와 정규식 이거 머냐 흐음... 재밌네 이게 필요한 만큼 잘라준다고 ??

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

공 던지기

내풀이

//좋은 방법은 아닌것 같지만 number를 계속 이어 붙인다. 그리고 해당하는 인덱스를 찾아서 arr에서 해당 인덱스의 요소를 반환한다.

다른풀이

//이런 좋은 방법이 있는데 머한거징 ㅋㅋㅋ 걍 나머지 쓰면 되느뎅 ㅋㅋㅋ

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

문자열 계산하기

내풀이

// 흐음 일단 문자열로 공백을 없애서 만든다. 만약 에 +나 -기호를 만나면 다음번 숫자를 변경해준다.

//그리고 연산해주면 끝

베스트 풀이

//이건 뭐당가

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

영어가 싫어요

내풀이

//뭐 그냥 그 문자열 들어내면서 배열 만들어지면 합치면서 숫자넣고 반복 그리고 마지막에 타입만 넘버로 바꾸면 끝

베스트 풀이

//와 replace를 이렇게도 쓰는 구나 와 좋은데??? 오오

//reduce와 replaceAll의 조합도 좋구먼

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

삼각형의 완성조건(2)

내풀이

//일단 작은수가 앞에오도록 배열을 정렬해주고

//for문은 많이 돌릴필요 없이 삼각형의 성립요건하에서 범위를 잡고

//이제 i가 가장큰변이 아닐때랑 가장 큰변일때랑을 분기해서 조건을 정해주면 끝

다른풀이

//뭐여 이것은 최솟값을 찾아낸다음에 두배곱해서 하나 빼주면 된다고?

다른풀이

//호호 배열안에 i값도 넣어서 sort해서 자동정렬 하는구먼 호호 좋다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

구슬을 나누는 경우의 수

나의풀이

//뭐 이건 수학적으로 확률과 통계의 조합이니까 그 방식대로 함 ㅋ

다른풀이

//와 재귀함수 멋있다. 와 팩토리얼 이렇게 만드는구나 와... 찢었다. 뱀 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

외계어 사전

내풀이

//일단 spell을 사전순으로 정렬하고 str로 할당한다. 이제 dic을 돌면서 해당 요소를 사전순으로 정리했을때 spell과 같아야 

//한다.

다른풀이

//some 배열매서드를 통해서 일치하는애가 하나라도 있는지 찾는구먼 와 좋다.