본문 바로가기

일반 학습69

[프로그래머스] 이진 변환 반복하기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/70129?language=javascript 풀이 처음 조건은 현재 s에 0이 있는지 확인 후 있다면 0을 모두 제거하고 제거한 0만큼 카운터를 쌓아준다. 그리고 남은 1들의 길이를 잰 다음 해당 길이를 다시 2진수로 바꾸면 1과0로 조합된 이진수형태가 될 것이다. 다시 여기서 처음 조건문부터 반복해주어야하며 길이가 1이 될 때 반복을 종료하면 된다. 우선 01110을 입력값 기준으로 생각해보자. 들어온 값에 0이 포함됐으므로 0을 제거해주어야한다. 제거한 0의 카운터를 +2해준다. 111만 남게 되고 111의 길이인 3을 이진형태로 바꾸면 11이 된다. 11은 0이 포함되어 있지 않다. 바로 길.. 2022. 4. 29.
[프로그래머스] 교점에 별 만들기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/87377 풀이 아래 참고사항을 보면 이처럼 교점이 존재하는 경우와 두직선이 평행하거나 일치하는 조건을 알려준다. line으로 받은 배열은 A B E와 C D F를 각각 조합할 수 있다.for문을 돌려 첫 인덱스와 이중for문으로 첫인덱스+1한 값 부터 차례로 끝가지 검사하고 검사할 때마다 기준 인덱스와 비교할 인덱스에서 각각 a, b, e를 그리고 c, d, f를 추출하여 평행하는지 아닌지 값을 slope라는 변수에 담아주었다. 그리고 x와 y값을 slope를 이용해 찾아주고 slope가 0이 아닌 경우 x와y를 정수인지 확인해 둘다 정수 인경우에만 최대x,y 최소 x,y를 계속해서 바꾸어준다. .. 2022. 3. 29.
[프로그래머스] 구명보트 처리순서 더보기 https://programmers.co.kr/learn/courses/30/lessons/42885 풀이 처음에는 people배열을 받아서 sort로 낮은수부터 높은수까지 정렬 오름차순 정렬을 해서 가장작은값부터 순서대로 넣었는데 가장 작은 값과 가장큰값을 비교해서 넣어줘야 최소한의 구명보트를 조합할 수 있다. 가장 큰값과 가장 작은 값을 더해서 받은 limit보다 작거나 같다면 보트에 실어 보낼 수 있다. 그렇지 않다면 다음값인 70과 가장 작은 값 50을 똑같이 더해본다. 만약 처음부터 둘의 합이 조건에 만족한다면 그안쪽으로 한칸씩 이동시켜 안에 두번째로 가장큰 값과 두번째로 가장 작은값을 비교하게 된다. 이 문제는 어떻게 최소한의 구명보트수를 계산할 것인가를 통해 어떻게 비교 덧셈.. 2022. 3. 28.
[프로그래머스] 영어 끝말잇기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/12981 풀이 이미 사용한 단어는 useWord2에 담아주며 새 단어를 받을 때 마다 useWord2에 속한 단어인지 확인한 뒤 자신의 단어 맨 앞과 이전사람이 뱉은 단어의 뒤가 일치 한다면useWord2에 담아준다. for문을 돌릴 것인데 i가 0이라면 아무 단어도 아무 제약도 없으니 그냥 useWord2에 담아준다. i가 1 이상이라면 위 if문으로 처리하고 만약 useWord2에 있는 단어가 또 들어가려한다거나, 자신의 앞단어가 이전 사람이 뱉은 단어 맨 뒤랑 같지 않다면 현재 순서와 자신의 번호를 리턴한다. 만약 리턴없이 for문이 끝나면 아무 문제 없는 게임이므로 [0,0]을 리턴한다. .. 2022. 3. 28.
우선권에 따라 선수 데려가기 조건 powers로 각 선수들의 힘(1 2022. 3. 27.
[프로그래머스] 2개 이하로 다른 비트 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/77885 풀이 numbers배열을 입력받고 for문으로 풀어서 각 number을 calc라는 함수로 보내서 number를 기준으로 1씩 숫자를 올리며 기준숫자인 number와 +1올린 숫자를 베타논리연산으로 비교하여 나온 값을 다시 2진수로 바꿔 각 비트를 배열로 만들어 다시 for로 풀어주면서 해당 숫자가 1인경우 number와 +1한 number의 차이로 그때마다 count를 올리다가 3이상 되면 종료해버리고 아니라면 숫자끝까지 검사해서 for문 종료와 동시에 count가 2이하이면 break하면서 현재 start를 리턴해주게 된다. 예를 들어 number가2고 +1한게 3이라면 둘을 베타논리.. 2022. 3. 25.