카테고리 없음

24/4/1 알고리즘(2)

한지지우우 2024. 4. 1. 23:37

내적

내풀이

//배열매서드를 돌린다. idx는 서로 같기 때문에 동일한 요소를 곱하면서 더해주면 내적 끝

다른풀이/

//여기도 흐음... 비슷하구먼

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

가운데 글자 가져오기

내풀이

//일단 문자열이 짝수이냐 홀수이냐에 따라서 결과가 다르니까 삼항연산자로 분기하고 , 이제 길이의 절반에 중심이

//있응께 slice로 살포시 뽑아주면 끝

다른풀이

//랭스의 절반을 올림하는구먼 오호 그럼 첫 인글자의 인덱스가 바로 나오겄구먼 호호두번째는 짝수면 2개 긁어내고 1개 긁어내고가 정해지니까 흐음 좋구먼

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

수박수박수박수박수박수

내풀이

//포문을 엔만큼 돌리는데 이제 인덱스가 짝수면 수를 넣고 홀수면 박을 푸쉬푸쉬

다른풀이

//걍 필요하신만큼 잘라내셨구먼 허허허

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

약수의 개수와 덧셈

내풀이

//일단 뭐 레프트와 라이트 포함한 사이의 수를 요솔로 갖는 배열을 만들어 준다.

//배열매서드 돌리고 이제 각요소에 약수가 몇개인지 포문을 돌려서 카운트에 기록해주고 이제 약수의 개수가

//짝수인지 홀수인지 여부 확인해서 분기해서 연산

다른풀이

//일단 포문은 레프트하고 롸이트 사이를 도는 구먼 제곱근이 정수면 약수의 개수가 홀수이다? 홀리쉿 맞네

//와..... 찢었다.

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

문자열 내림차순으로 배치하기

내풀이

//배열로 바꿔서 사전순 정렬하면 큰게 앞에오니까 리버스 해주고 문자열로 합쳐주면 끝

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

부족한 금액 계산하기

내풀이

//이제 총이용 횟수만큼의 금액을 sum에다가 합하는데 중요한게 이게 돈이 안부족할수도 있음 그러면 현재 가진money가

//더 많다는 거니까 그럴때 0을 리턴하도록 조치하면 됨

다른풀이

//수학적으로 풀었다호호 등차수열의 합이라 오호

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

문자열 다루기 기본

내풀이

//replace 매서드를 통해 문자열에 숫자가 아닌 문자열을 빈배열로 바꿔버림

//이제 원본 문자열이 길이를 확인하고 문자열이 숫자로만 이루어진게 맞는지 확인해서 true false를 나눠준다.

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

행렬의 덧셈

내풀이

//reduce 두번 슬라니까 헷갈리구먼 그냥 map두번 쓰는게 나을뻔 했네 흐음...안에 맵핑을통해 배열안에 배열애들을 더해주고 

바깥 reduce에서는 그 배열을 요소로 갖겠금해서 배열로 축적해서 반환하면 끝

다른풀이

//역시 맵 두번이 낫구먼 흐음...

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

직사각형 별찍기

//

내풀이

//별의 가로 갯수는 repeat로 a번 연속되게하고 세로는 포문을 b번 돌려서 해결

다른풀이

//역슬래쉬 n으로 띄어쓰기를 시켜서 그걸 분자열 자체를 b번 쓰는 구먼 오호 좋은데?

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

최대공약수와 최소공배수

내풀이

//일단 뭐가 큰지모르니까 n,m중에 큰걸 뒤에 두는 배열로 바꿈

//이제 작은거 만큼의 횟수만큼 돌려서 최대 공약수를 구해준다. 최소공배수는 두수곱하기 최대공약수니까

//배열형태로 저래 리턴한다.

다른풀이

//뭐야 이거? 머냐?

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

같은 숫자는 싫어

내풀이

//필터링을 이용해보자 일단 idx가 0일때는 앞선 숫자가 없으니 그대로 통과시키고

//이제 1번인덱스부터 앞전 요소랑 같으면 걸러주고 다르면 그대로 둔다.

다른풀이

//아하... 뒤에랑 같지 않으면 놔두는 구나... 그럼 같은애들은 계속 빠지고 동일한 요소의 가장 뒤만 남는구나 와우

머리 좋다

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

3진법 뒤집기

내풀이

//주어진수를 3진법으로 바꾸고 배열로 만들고 뒤집고 문자열로 만들고 3진법에서 10진법으로 만든다.

다른풀이

//3으로 나눈 나머지를 앤써에 축적하는 방식으로 3진법수를 완성하시고 그렇게 나온 거꾸로 된 배열을

//3의 인덱스 제곱을 해서 원래 십진법숫자로 더해나가시는군 직관적이고 좋네요

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

예산

내풀이

//뭐 신청금액 작은 부서부터 지원해주면 최대한 많이 지원해 줄수 있응께

//일단 오름차순으로 부서들을 정리한다. 해당 배열로 이제 reduce를돌리고 배열형태로 축적하는데

//앞은 총 합계 금액 두번째는 부서의 숫자 이다.

//총예산만 넘지않으면 그 부서를 카운팅 해준다. 그리고 반환

 

다른풀이

//똑같이 reduce를 쓰고 있지만 총금액에서 깍아가는구나 그래서 이제 총예산이 마이너스가 되어버리면카운트 안세주고

좋네

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

이상한 문자 만들기

내풀이

//일단 띄어쓰기를 기준으로 쪼개 준다. 쪼개진애들을 맵매서드 돌리고 각요소가 문자열인데 다루기 쉽에 

요소를 배열로 만들고 이제 해당 인덱스의 짝홀수 판별후 대소문자 바꿔주고 문자열로써 합쳐준다. 이걸 맵매서드의
//요소로 반환하고 마지막에 다시 띄어쓰기를 넣어주면 문자열 완성

다른풀이

//호호 전부 대문자로 만들고? 이제 정규식만족하는 애들은 대문자로 만들고 아니면 소문자로 만드는건가? 

//야발 정규식이거 뭐냐구

~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
크기가 작은 부분문자열

내풀이

//티와 피의 길이로 반복문이 돌아갈 횟수가 정해지고 티를 p의 길이만큼 잘라나가면서 p와 크기 비교를 한다.

//비교가 완료되면 연산해준다.

다른풀이

//동일하구먼

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

삼총사

내풀이

//일단 배열의 3개를 확인해야 하는데 다 일일히 결국 확인해봐야 될것 같으니까 삼중포문 채택

//첫 요소는 전체 길이의 맨앞에서 시작해서 뒤에서 두번째 전까지만 돌면되고 두번째 포문도 결국 전체 넘버의 길이의

//에서 2만큼 뺀만큼 돌면되고 세번째 포문도 마찬가지 근데 이제 똑같은 애들을 여러번 카운트하면 안되니까

//하나씩 뒤로 밀려나면서 ㅇㅋㅇㅋ

다른풀이

//씌봐 재귀네?? 헐... 포기

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

최소직사각형

내풀이

//흐음 가로 세로를 바꿀수 있다니까 일단 sort를 통해 정렬을 한다.

//원래 것보다 크면 큰애로 바꿔주는 바익으로 reduce를 돌린다. 마지막에 제일 큰 가로 값과 세로값을 곱해주면 끝

다른사람 풀이

//사이즈라는 배열을 큰애가 앞에 오게 배열을 바꿧구먼

//포이치 돌려서 맥스사이즈 원래 값보다 새로운 녀석이 크면 교체해줘서 다 순회하고 가장큰 가로 세로 곱해서 끝

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

시저 암호

내풀이

//대문자 소문자 문자열을 만든다 이중으로

//s를 배열로 만들어서 맵을 돌린다. 그냥 공백이면 그대로 놔두고 이게 대문자에 속하는지 확인되면 해당 인덱스를 찾고

//그보다 엔번째 뒤의 인덱스를 갖는 요소로 바꿔준다.

//map이 끝나면 join으로 하나의 문자열로 만들어 반환

다른풀이

//굳이 인덱스를 두번쓰지 않고 인덱스가 원래 길이를 넘어서면 한번 빼주는 구먼 좋다. 

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

가장 가까운 같은 글자

내풀이

//일단 배열로 만들고 맵 매서드를 돌린다. 근데 첫번째 요소는 앞에 요소가 없응께 바로 -1을 요소로 삼고 이제 

//그다음부터 자기자신보다 앞에 있는 문자열에서 가장 마지막 동일한 요소의 인덱스를 찾기위해

//lastOFindex매서드를 사용한다. .이제 해당 인덱스를 못찾는다는것은 없다는 거니까 -1을 반환하고 있다고하면

//인덱스의 차이를 요소로 반환해주면 끝

다른풀이

//역시나 맵을 돌리시구요 해당요소가 객체에 있다면 인덱스에서 해당요소를 빼서 반환해주고

//없다면 -1 호호 그리고 인덱스를 해쉬에 저장 호호 재밌네

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

숫자 문자열과 영단어

내풀이

//replaceAll을 이용해 해당 문자를 바꿔준다. 마지막에 숫자타입으로 바꾼다.

다른 풀이

//객체로 영문을 저장해놓고 이제 split으로 뽑아내고 join으로 사이에 숫자 넣는구먼 그걸 길이만큼 반복하고

//마지막에 타입 숫자로 바꾸고 좋으네요