카테고리 없음

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

한지지우우 2024. 3. 31. 23:16

분수의 덧셈

내풀이

//흐음 일단 그냥 일반 분수로 더했을때의 분자 분모를 구해준다. 그리고 가장 큰수를 뽑고 그숫자 미만의 횟수의 

//반복문을 도는데 분모와 분자를 둘다 나누어 떨어지게 하는 최대 공약수를 구한다. 근데 이게 포문 횟수를

//돌리니까 정답이어가지 얼떨결에 됐는데 ... 왜지?

다른풀이

//재귀 함수 미쵸따 딱 나누어 떨어지면 그게 최대 공약수니까 아하 어렵당

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

최빈값 구하기

내풀이

//내 풀이 맘에 안들긴하는군 일단 reduce를 이용해 객체로 만든다. key에 몇개의 value가 있는지 알기 위해

//일단 해당 키값이 있으면 원래 키값을 증가시키고 아니면 1로 초기화

//그렇게 obj를 만든다. 이제 entries로 키와 벨류를 담은 배열을 요소로 갖는 배열로 만들어서 최빈이들을 앞으로

보낸다.

//이제 완성된 배열이 길이가 하나라면 수가 하나니까 맨앞에 키를 리턴해주면 끝이고

//두개이상의 배열일때 최빈값이 하나인지 두개이상인지 여부를 확인해서 분기해준다.

다른풀이

//오브젝트 구조를 만들고 이제 반복문 돌리고 n을 키 그 수량을 벨류로 갖도록 포문 돌린다.

//그렇게 나온 오브젝트 구조를 배열로 만들어서 이제 벨류에따라 내림차순으로 정렬하고

//이 길이가 1이거나 앞에있는애가 최빈이면 그 최빈의 키값을 도출하고 둘다 해당안되면 -1 도출 캬 좋다.

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

종이 자르기

내풀이

//걍 이런 구조로 보여서 했는데 됨 홀리쉿 ㅋㅋㅋ

베스트 풀이

//와 1e9가 10의 9승이라네? 저런값이 필요해? 어쨋든 N+1개의 요소를 가진 M+1의 배열이라

//이중포문을 M*N회 돌고여 어.... 포기

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

캐릭터의 좌표

내풀이

//흐음 일단 가로 세로의 제한을 찾기위해서 한계점의 x좌표 y좌표를 구한다.

//그리고 배열의 요소가 위아래 오른쪽 왼쪽 중에 뭐냐에 따라 분기하고 이제 다만 한계선에 이미 와있다면

//원래값을 반환하고 아니면 연산처리 해준다.

다른풀이

//흐음 오브젝트로 두고 이제 배열에 요소가 가로 세로 한칸이동을 표현하는 배열이고요

//이제 축적된값과 새로운값을 연산한 절대값 양수겠죠? 이게 한계점을 넘어버리면 원래값을 리턴하고

//아니면 변화된 값을 리턴하게 한다. 캬 좋은데?

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

직사각형 넓이 구하기

내풀이

//이것이 바로 노가다다 하하하하 x좌표 최대 최소 y좌표 최대최소 구해서 꼽해서 짠

다른풀이

//이거좋네 같은값은 set으로 걸러내고 이제 남아있는 네개의 값 정보를 절대값을 이용해서 곱해주면 끝

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

로그인 성공?

내풀이

//흐음... 뭐 일단 정보받은 아이디 비번을 쓰기 쉽게 구조분해 하고

//db정보를 확인하기 위해 반복돌리고 이제 아디 비번이 다 일치하면 로그인 보여주고

//아디만 맞으면 우롱패쒀드 보여주고

//기본은 실패

다른풀이

//db 배열을 오브젝트 형으로 바꾸는 구먼? id라는 키값이 있냐? 있다면 패스워드까지 확인하고 아니면 조래하고

// 야 좋은데???

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

등수 매기기

내풀이

//일단 score를 통해 평균점수를 요소로 담은 배열로 만든다.그걸 arr이라 해보자

//arr을 내림차순으로 만들고 인덱스까지 함께 품는 배열을 arr2라 하자

//arr을 다시한번 map매서드를 써성 arr와 점수가 같은애를 find해서 고기서 이제 등수만 요소로 반환하면

//이쁘게 완성

다른사람 풀이

//어디보자. 자기보다 점수높은 사람을 찾는구나... 그때마다. +1되면서 자신의 순위가 밀리는거야... 덜덜 천재다

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

치킨 쿠폰

내풀이

//짜증나는 치킨일세 에휴 ... 일단 치킨 갯수만큼 쿠폰을 가지고 있다. 쿠폰10장 당 한마리를 얻을수 있다. 

//근데 이제 그렇게 쿠폰질한거랑 쓰고 남은 쿠폰이랑 합한게 다음에 쓸수 있는 쿠폰이다.

//그리고 이제 보은 쿠폰이 10장 이하이면 더이상 시킬수 없다.

다른풀이

//이분은 와일문이구먼 근데 쿠폰 스펠링이 저거였군 ㅋㅋㅋ 

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

저주의 숫자 3

내풀이

//그냥 arr를 만들어 줄껀데 arr는 오름차순인데 3의 배수와 각자리에 3을 포함 하지 않도록 조치한다.

//이제 n이랑 같은 위치의 숫자의 인덱스는 n-1일테니까 그거 반환하면 끝

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

유한소수 판별하기

내풀이

//위에서 배운 최대공약수 구하는 함수를 만든다.

//기약분수로 만들고 그 분모를 이제 2와 5이외에 소인수를 가지면 안되니까 2랑 5를 다 빼준값이

//1이면 유한소수가 될수 있고 1이 아니면 유한소수가 될수 없다.

다른풀이

//가장 작은수까지만 반복문을 돌고 이제 둘다를 나눌수 있는 n을 찾는다 최대공약수

//이제 최대공약수로 분모 나눠서 기약분수의 분모로 바꾸고 이제 2랑 5로 계속 쪼개서 분모가 1이외의 

값이 되는지 여부로 확인 오 깔끔하고 좋다.

!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

문자열 밀기

내풀이

//뭐 이제 일단 기본적으로 answer에는 횟수를 담는다. 이제 배열로 만들어서 맨뒤 요소 빼서 맨앞에 넣는작업

//을 반복문으로 일으키고 해당 횟수를 기록한다. 이제 같아지는 지점이 발생하면 반복문을 멈춘다.

 

다른풀이

//캬 쌈박하다. 진짜 캬 자연스레 인덱스가 이동숫자가 되고 없으면 -1이 반환되어 버리는 캬

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

특이한 정렬

내풀이

//sort의 성질을 이해 하기에 참 쉽쥬?

//일단 n과 두 인자의 차이가 같아서 차가 0이 된다면 내림차순으로 오게끔 하고 만약에 둘이 다르다면 차이가 작은애가 앞에 오게끔 조치한다.

다른푸루이

//와우 앞에가 0되면 당연히 뒤가 되는 구나 좋다.

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

다항식 더하기

내코드

//아니 왜 자꾸 틀리는지 모르겄네 야발

//제코드가 왜 틀렸는지 아시는분 댓글좀 주세용

다른사람 풀이

//필요없는거 날리고 배열만들고 이제 x의 계수숫자 모아주고 상수항 모아주고 x의 계수가 1일때 경우 빼주고

// 상수항 넣어주면 되는데 나는 왜 오류나냐고 !!!!

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

OX퀴즈

내풀이

//일딴 퀴즈라는 어레이에 맵 매서드를 돌린다. 안쪽에서 요소를 공백을 없앤 배열형태로 만들고 이제 더하기 연산자면
//말그대로 더해주고 비교할 결과값과 함께 배열형태로 리턴하고 , 더하기가 아니면 빼주고

//이걸 다시한번 맵매서드 쓰는데 이제 연산결과와 실제 결과가 일치하면 동그라미 아니면 엑스

다른풀이

//일단 이분도 맵 매서드 돌리고 는 기호 양옆으로 쪼개고 더하기가 포함되는지 확인해서 sign을 정하는 구먼

// 역시 sign의 종류에 따라 연산을 바꿔주고 실제결과와 비교해서 o x 평가

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

다음에 올 숫자

내풀이

//일단 type을 나눠보자 common이라는 애가 각요소의 차이가 일정하면 등차이므로 분류하고

//아니면 등비로 분류 이제 등차일때는 차만큼 마지막요소에 더해주면끝

//등비일때는 비율만큼 곱해주면 끝

다른풀이

//똑같구먼

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

연속된 수의 합

내풀이

//배열이 짝수인지 홀수인지 나누어 준다. 그리고 그 중간값을 구해주고 이제 1씩만 차이나는거니까

// i만 증가시키며 push 해주면 끝 짝수와 홀수일때 차이는 1/2만큼이다.

다른풀이

//짝홀수에 상관없이 최소값과 최댓값을 구할수 있구먼 호호 배열의 길이는 이 두개롤 정할수 있고 0으로 채우고

//시작숫자는 min으로 해서 하나씩 증가하도록 하고 좋다.

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

안전지대

내풀이

//에러남 ㅋㅋ 해당 인덱스가 없어서 그런가봄 ? 어떻게 풀어나가야 될지 감도 안잡힘

베스트 풀이

//일단 위험지역 8개 좌표를 미리 덴져 에어리어라고 담아둔거 같음 

//이중포문을 돌리고 // 이제 1을 발견하면 어레이 에서 맵을 돌리고 삼중반복문 지려부리네 

//각 인덱스 요소를 더해가며 x,y를 재설정함 이값을 board안에 들어있다는 조건이고 원래 안전지대 였다면 이제 위험지역으로 2로 바꾼다. 흐음 아하 1은 놔두는 거구나... 

//그리고 이제 다시한번 map 돌려서 0인애들을 찾는거구나 아하.... 이해 완

다른풀이

//이것도 역시 미리 지역을 설정해 놓으시네 ..보드에대한 포이치를 돌리시고 안에서 이제 한번더 포이치를 돌리시고

//결국 이중 반복문 그 요소가 1인 경우에는 포이치를 한번 스킵

//아웃사이드에 썸메서드를 돌려서 아씨 모르겄는데?

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

겹치는 선분의 길이

내풀이

//크흠 일단 양끝점만 표시된거니까 선분의 뒷점말고 앞점을 그 선분이라고 치고 arr에 담아준다.

//lines가 이중 배열이니까 이중 반복문으로 푸쉬 해준다.

//arr이에는 선분의 번호가 전부 담긴다.

//동일한 애들을 확인해야하니까 reduce를 이용해서 객체 형태로 만든다. 동일한 데이터는 축적된다.

// 이제 그중에서 values로 만 이루어진 배열로 만들고 필터링을 통해 선분이 두개이상 겹친애들을 추려내서

//그 길이를 확인하면 끝

다른사람 풀이

//요소가 200인 배열?? 잉? 포문 신박하네 a가 b에 도달할때까지만 돌리는 구먼 아하 a하고 b가 100이하

//범위가 주어 져서 그러는 거구먼 100이상에서 계속 차곡차곡 요소들이 쌓이는구먼

//이제 나중에 reduce에서 1번 초과로 쌓인애들만 카운팅해서 축적하는구먼 오호 

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

평행

내풀이

//점 4개중 2개를 잇는 방식은 경우의 수가 3개이니까 조건을 3개로 나눈다.

//이제 기울기가 같으면 answer를 1로 바꿔준다.

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

옹알이 (1)

내풀이

//캬 정규식 야무졌다. cur에 각 문자열이 담기는데 이제 그중에서 발음 가능한애들을 정규식으로 골라서 다 빈문자열로 바꾼다.

// 이제 str에 빈문자열이 있다는것은 아기가 발음 가능하다는것 그러니까 카운트를 증가시켜준다.

베스트 풀이

//set에다가 발음을 담으셨네 이중 포문이 돌아가고 글자하나하나 담다가 이제 set만들어놓은거에 해당 단어가 있다면
//접두사에 그것을 할당하고 리메인월드는 비워둔다라... 접두사랑 리메인이랑 같으면 포문을 종료시키고

//리메인이 없다면 그건 발음할수 있는 아이니까 결과를 증가... 호우호우

//알면알수록 어려워지는 알고뤼줌

 

//끄앙 입문 다풀었당!!!