코딩테스트 33

[Javascript] 성적 평균

https://softeer.ai/practice/info.do?idx=1&eid=389&sw_prbl_sbms_sn=235667 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai level 3에서 유일하게 풀 수 있는 듯🤣 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; rl.on('line', function(line) { input.push(line); }).on('close', function() { input = input.map(el => el.split('..

[Javascript] 지도 자동 구축

어제 깜빡하고 코드 정리를 안 해놨네😅 사실 이 문제는 스스로 풀지 못했고 https://jie0025.tistory.com/423 [Softeer][level2] 지도 자동 구축 - 파이썬(Python) https://softeer.ai/practice/info.do?idx=1&eid=413 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 현대자동차그룹이 레벨3 자율주행차 상용화 목표에 발맞춰 총력을 다하고 있는 가운데, jie0025.tistory.com 이분의 포스트에서 사고 과정을 읽어본 다음에야 이해하고 코드를 작성할 수 있었다. 이런 유형의 문제는 종이를 가져다놓고 계산해보면서 푸는 쪽이 좋을 것 같다. 적성검사 숫자추리영역 푸는 기분...😂 const..

[Javascript] 금고 털이

https://softeer.ai/practice/info.do?idx=1&eid=395&sw_prbl_sbms_sn=234609 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 가격을 기준으로 금속의 종류를 정렬한 다음 제일 비싼 애부터 가방에 넣어 가방의 무게는 차감되고 가격은 증감하는 식으로 반복문을 짜면 된다. 그런데 조건문을 어떻게 쓰느냐에 따라 어떤 건 오답이 되고 어떤 건 정답이 되더라...(테스트 케이스는 둘 다 통과함) 정답 : const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); l..

[Javascript] 8단 변속기

문제마다 적혀있는 정답률의 기준을 잘 모르겠다. 정답률 더 높은데 전혀 못 풀겠는 문제가 있고, 더 낮은데 잘 풀리는 문제가 있다. for문을 돌리려고 이렇게 저렇게 코드를 짜보다가 왠지 every() 메소드도 될 거 같아서 사용해봤더니 다행히 잘 돌아갔다. const readline = require('readline'); const rl = readline.createInterface({ input : process.stdin, output : process.stdout, }); let input; rl.on('line', function(line) { input = line.split(" ").map(v => parseInt(v)); }).on('close', function() { if (inpu..

[Javascript] 전광판

레벨2만 되어도 너무 어렵다.....!!! 어떡하냐!!! 어떻게 풀어나가야겠다라는 전체적인 그림까지는 그래도 대강 그려낼 수 있는 것 같은데 이런 노가다를 한다고? 하면서 제거한 방법이 사실 정답이라든가, 방법 자체를 떠올리지 못하는 게 늘 문제인 듯.... 전광판에 대한 해설은 Python만 존재해서 자바스크립트로 푼 코드를 첨부한다. 그리고 소프티어에서 코테할 때 rl.close()는 아예 쓰지 말아야하더라. 그걸 쓰면 제대로 입력을 못 받는다...이유는 모르겠다 node.js를 모르니까 ㅇ v.padStart(5, ' '))); let count = 0; input.forEach((test, i) => { const [a, b] = test; for (i = 0; i

Softeer 코딩테스트 연습 문제 체험

제일 쉬운 '근무 시간' 문제를 도전해봤는데 알아서 입출력을 해주는 프로그래머스와 달리 Node.js로 풀어야해서 그것 때문에 제일 많이 애를 먹었다. 백준으로 연습을 했어야 했나.....그래도 알고리즘 자체는 프로그래머스에서 기초를 잘 닦아둔 게 도움이 되었다. 백준처럼 소프티어도 파일로 데이터를 받는지 rl.close()를 처리하지 않아도 무한 입력 상태에 걸리지 않고 결과값이 잘 뜬다. 모듈이 없다고 에러가 떠서 ES6의 import {createInterface} from 'readline'은 사용할 수 없었다. (어차피 똑같은 기능이지만 편집기가 추천하길래 한번 시도해봤다🤣) 아래는 내가 잊지 않으려고 남겨두는 코드. const readline = require('readline'); const..

[Javascript] 두 수의 합

문제 설명 : 0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요. 뭐지~! 너무 쉬운데 정답률이 왜 낮은 거지~! 하면서 풀었으나 그러면 그렇지 테스트 케이스 2번이 이 문제의 핵심이었다. 예제 2번의 a, b는 각각 18446744073709551615, 287346502836570928366이고 18446744073709551615 + 287346502836570928366 = 305793246910280479981입니다. 따라서 "305793246910280479981"을 return 합니다. 그냥 덧셈을 시키면 305793246910280479981이 안 나오고 305793246910280500000이 반환되었다...

[Javascript] 문자 개수 세기, 배열 만들기 4

1) 문자 개수 세기 문제 설명 : 알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요. 문자 개수 세기는 도저히 알고리즘 자체가 생각나지 않아서 🤯 손도 못 대고 다른 사람의 풀이를 봤다. (스탬프 괜히 받고 싶었는데 잘 가...) 그냥 단순하게 알파벳 대소문자를 쭉 나열해서 문자열을 만들고 반복문을 돌려서 인덱스로 찾는 방식이었다니.....😞 그런 단순 노..

[Javascript] 조건에 맞게 수열 변환하기 2

문제 설명 : 정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다. 문제를 읽으면서 필요한 작업을 생각해내는 건 어렵지 않았다. 1. 배열을 변환하는 작업이 하나 필요하다. 2. 변환된 배열과 이전 배열을 비교해야 하므로 이전 배열을 변수로 저장돼야 하고 이게 계속 ..

[Javascript] 1로 만들기 (+답변 추가)

문제 설명 : 정수가 있을 때, 짝수라면 반으로 나누고, 홀수라면 1을 뺀 뒤 반으로 나누면, 마지막엔 1이 됩니다. 정수들이 담긴 리스트 num_list가 주어질 때, num_list의 모든 원소를 1로 만들기 위해서 필요한 나누기 연산의 횟수를 return하도록 solution 함수를 완성해주세요. 첫 풀이 : 로직 과정은 분명히 맞는 것 같은데 자꾸 답이 7로 나온다. 한 번씩 카운트를 덜한다는 소리 같은데, 왜 그렇게 되는지 도무지 원인을 찾지 못했다... function solution(num_list) { return num_list.reduce((acc, cur) => { while (cur !== 1) { return cur % 2 ? (cur - 1) / 2 : cur / 2; acc++..