목차
외계어 사전
function solution(spell, dic) {
var answer = 2;
let target = spell.sort().join("");
for (let word of dic) {
if (word.split("").sort().join("") === target) {
return 1;
}
}
return answer;
}
종이 자르기
function solution(M, N) {
var answer = M*N-1;
return answer;
}
직사각형 넓이 구하기
function solution(dots) {
var answer = 0;
let minX = dots[0][0];
let maxX = dots[0][0];
let minY = dots[0][1];
let maxY = dots[0][1];
for(i = 1; i < 4; i++){
if(dots[i][0] < minX){
minX = dots[i][0];
} else if(dots[i][0] > maxX){
maxX = dots[i][0];
}
if(dots[i][1] < minY){
minY = dots[i][1];
} else if(dots[i][1] > maxY){
maxY = dots[i][1];
}
}
answer = (maxX - minX) * (maxY - minY);
return answer;
}
로그인 성공?
function solution(id_pw, db) {
var answer = '';
for (let i = 0; i < db.length; i++) {
if (db[i][0] == id_pw[0]) {
if (db[i][1] == id_pw[1]) {
return "login";
} else {
return "wrong pw";
}
}
}
return "fail";
}
치킨 쿠폰
function solution(chicken) {
var answer = 0;
let coupons = chicken;
while (coupons >= 10) {
let newService = Math.floor(coupons / 10);
answer += newService;
coupons = coupons % 10 + newService;
}
return answer;
}
등수 매기기
function solution(score) {
var answer = [];
let avg = [];
for(i = 0; i<score.length; i++){
avg.push((score[i][0] + score[i][1]) / 2);
}
let sorted = [...avg].sort((a,b)=>b-a);
for(a of avg){
answer.push(sorted.indexOf(a) + 1);
}
return answer;
}
저주의 숫자 3
function solution(n) {
var count = 0;
let num = 1;
while (count < n) {
if (num % 3 !== 0 && !num.toString().includes('3')) {
count++;
}
num++;
}
return num - 1;
}
유한소수 판별하기
function solution(a, b) {
function gcd(x, y) {
while (y !== 0) {
let temp = y;
y = x % y;
x = temp;
}
return x;
}
let gcdValue = gcd(a, b);
b /= gcdValue;
while (b % 2 === 0) {
b /= 2;
}
while (b % 5 === 0) {
b /= 5;
}
if (b === 1) {
return 1;
} else {
return 2;
}
}
문자열 밀기
function solution(A, B) {
var answer = -1;
let tempA = A;
for (let i = 0; i < A.length; i++) {
if (tempA === B) {
return i;
}
tempA = tempA[tempA.length - 1] + tempA.slice(0, -1);
}
return answer;
}
특이한 정렬
function solution(numlist, n) {
var answer = [];
return numlist.sort((a, b) => {
const difA = Math.abs(a - n);
const difB = Math.abs(b - n);
if (difA === difB) {
if (a > b) return -1;
if (a < b) return 1;
return 0;
}
return difA - difB;
});
}
다항식 더하기
function solution(polynomial) {
var answer = '';
let x = 0;
let cons = 0;
const terms = polynomial.split(" + ");
for (let term of terms) {
if (term.includes("x")) {
if (term === "x") {
x += 1;
} else if (term === "-x") {
x -= 1;
} else {
const inx = parseInt(term.replace("x", ""));
x += inx;
}
} else {
cons += parseInt(term);
}
}
let result = "";
if (x !== 0) {
if (x === 1) {
result += "x";
} else if (x === -1) {
result += "-x";
} else {
result += x + "x";
}
}
if (cons !== 0) {
if (result) {
result += " + " + cons;
} else {
result += cons;
}
}
return result || "0";
}
최빈값 구하기
function solution(array) {
var answer = 0;
let freq = {};
for (num of array) {
freq[num] = (freq[num] || 0) + 1;
}
let sorted = Object.entries(freq).sort((a, b) => b[1] - a[1]);
if (sorted.length === 0 || sorted[0][1] !== sorted[1]?.[1]) {
return parseInt(sorted[0][0]);
}
return -1;
}
OX퀴즈
function solution(quiz) {
var answer = [];
for (let i = 0; i < quiz.length; i++) {
let arr = quiz[i].split(" ");
let num1 = parseInt(arr[0]);
let operator = arr[1];
let num2 = parseInt(arr[2]);
let result = parseInt(arr[4]);
let calc;
if (operator === "+") {
calc = num1 + num2;
} else if (operator === "-") {
calc = num1 - num2;
}
if (calc === result) {
answer.push("O");
} else {
answer.push("X");
}
}
return answer;
}
다음에 올 숫자
function solution(common) {
const dif = common[1] - common[0];
const ratio = common[1] / common[0];
if (common[2] - common[1] == dif) {
return common[common.length - 1] + dif;
}else {
return common[common.length - 1] * ratio;
}
}
연속된 수의 합
function solution(num, total) {
var answer = [];
let start = Math.floor(total / num - (num - 1) / 2);
for (let i = 0; i < num; i++) {
answer.push(start + i);
}
return answer;
}
분수의 덧셈
function solution(numer1, denom1, numer2, denom2) {
function gcd(a, b) {
if (b == 0) return a;
return gcd(b, a % b);
}
function lcm(a, b) {
return (a * b) / gcd(a, b);
}
let denom = lcm(denom1, denom2);
let nume = numer1 * (denom / denom1) + numer2 * (denom / denom2);
let divisor = gcd(nume, denom);
return [nume / divisor, denom / divisor];
}
안전지대
function solution(board) {
const n = board.length;
const m = board[0].length;
const directions = [[-1, 0], [1, 0], [0, -1], [0, 1], [-1, -1], [-1, 1], [1, -1], [1, 1]];
let danger = Array.from({ length: n }, () => Array(m).fill(false));
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
if (board[i][j] == 1) {
for (let [dx, dy] of directions) {
const ni = i + dx;
const nj = j + dy;
if (ni >= 0 && ni < n && nj >= 0 && nj < m) {
danger[ni][nj] = true;
}
}
}
}
}
let count = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
if (board[i][j] == 0 && !danger[i][j]) {
count++;
}
}
}
return count;
}
겹치는 선분의 길이
function solution(lines) {
let covered = Array(200);
for (let line of lines) {
let start = line[0] + 100;
let end = line[1] + 100;
for (let i = start; i < end; i++) {
covered[i] = (covered[i] || 0) + 1;
}
}
let length = 0;
for (let i = 0; i < 200; i++) {
if (covered[i] >= 2) {
length++;
}
}
return length;
}
평행
function solution(dots) {
const calcSlope = (point1, point2) => (point2[1] - point1[1]) / (point2[0] - point1[0]);
for (let i = 0; i < 3; i++) {
for (let j = i + 1; j < 4; j++) {
for (let k = 0; k < 3; k++) {
for (let l = k + 1; l < 4; l++) {
if (i !== k && i !== l && j !== k && j !== l) {
if (calcSlope(dots[i], dots[j]) === calcSlope(dots[k], dots[l])) {
return 1;
}
}
}
}
}
}
return 0;
}
옹알이 (1)
function solution(babbling) {
var answer = 0;
const sounds = ["aya","ye","woo","ma"];
babbling.forEach(word => {
let wordLength = word.length;
for(let i = 0 ; i < sounds.length ; i++) {
if(word.includes(sounds[i]))
wordLength = wordLength - sounds[i].length;
if(!wordLength) {
answer++;
break;
}
}
})
return answer;
}
머쓱이 획득

17, 18일 해커톤 참여로 이틀을 빠졌더니 몰아서 하는게 힘들었다. 시간날 때 조금씩 해둘걸... 다음부턴 몰아서 하는일 없도록 해야겠다.
'[LG 유플러스] 유레카 > 코딩테스트' 카테고리의 다른 글
[JS]프로그래머스 - 카펫 (Lv.2) (0) | 2025.02.20 |
---|---|
[JS]프로그래머스 - 최댓값과 최솟값 (Lv.2) (0) | 2025.02.20 |
[입문][JS][02.16] 프로그래머스 코딩테스트 (0) | 2025.02.16 |
[입문][JS][02.15] 프로그래머스 코딩테스트 (0) | 2025.02.15 |
[기초][JAVA][02.14] 프로그래머스 코딩테스트 (0) | 2025.02.14 |
외계어 사전
function solution(spell, dic) {
var answer = 2;
let target = spell.sort().join("");
for (let word of dic) {
if (word.split("").sort().join("") === target) {
return 1;
}
}
return answer;
}
종이 자르기
function solution(M, N) {
var answer = M*N-1;
return answer;
}
직사각형 넓이 구하기
function solution(dots) {
var answer = 0;
let minX = dots[0][0];
let maxX = dots[0][0];
let minY = dots[0][1];
let maxY = dots[0][1];
for(i = 1; i < 4; i++){
if(dots[i][0] < minX){
minX = dots[i][0];
} else if(dots[i][0] > maxX){
maxX = dots[i][0];
}
if(dots[i][1] < minY){
minY = dots[i][1];
} else if(dots[i][1] > maxY){
maxY = dots[i][1];
}
}
answer = (maxX - minX) * (maxY - minY);
return answer;
}
로그인 성공?
function solution(id_pw, db) {
var answer = '';
for (let i = 0; i < db.length; i++) {
if (db[i][0] == id_pw[0]) {
if (db[i][1] == id_pw[1]) {
return "login";
} else {
return "wrong pw";
}
}
}
return "fail";
}
치킨 쿠폰
function solution(chicken) {
var answer = 0;
let coupons = chicken;
while (coupons >= 10) {
let newService = Math.floor(coupons / 10);
answer += newService;
coupons = coupons % 10 + newService;
}
return answer;
}
등수 매기기
function solution(score) {
var answer = [];
let avg = [];
for(i = 0; i<score.length; i++){
avg.push((score[i][0] + score[i][1]) / 2);
}
let sorted = [...avg].sort((a,b)=>b-a);
for(a of avg){
answer.push(sorted.indexOf(a) + 1);
}
return answer;
}
저주의 숫자 3
function solution(n) {
var count = 0;
let num = 1;
while (count < n) {
if (num % 3 !== 0 && !num.toString().includes('3')) {
count++;
}
num++;
}
return num - 1;
}
유한소수 판별하기
function solution(a, b) {
function gcd(x, y) {
while (y !== 0) {
let temp = y;
y = x % y;
x = temp;
}
return x;
}
let gcdValue = gcd(a, b);
b /= gcdValue;
while (b % 2 === 0) {
b /= 2;
}
while (b % 5 === 0) {
b /= 5;
}
if (b === 1) {
return 1;
} else {
return 2;
}
}
문자열 밀기
function solution(A, B) {
var answer = -1;
let tempA = A;
for (let i = 0; i < A.length; i++) {
if (tempA === B) {
return i;
}
tempA = tempA[tempA.length - 1] + tempA.slice(0, -1);
}
return answer;
}
특이한 정렬
function solution(numlist, n) {
var answer = [];
return numlist.sort((a, b) => {
const difA = Math.abs(a - n);
const difB = Math.abs(b - n);
if (difA === difB) {
if (a > b) return -1;
if (a < b) return 1;
return 0;
}
return difA - difB;
});
}
다항식 더하기
function solution(polynomial) {
var answer = '';
let x = 0;
let cons = 0;
const terms = polynomial.split(" + ");
for (let term of terms) {
if (term.includes("x")) {
if (term === "x") {
x += 1;
} else if (term === "-x") {
x -= 1;
} else {
const inx = parseInt(term.replace("x", ""));
x += inx;
}
} else {
cons += parseInt(term);
}
}
let result = "";
if (x !== 0) {
if (x === 1) {
result += "x";
} else if (x === -1) {
result += "-x";
} else {
result += x + "x";
}
}
if (cons !== 0) {
if (result) {
result += " + " + cons;
} else {
result += cons;
}
}
return result || "0";
}
최빈값 구하기
function solution(array) {
var answer = 0;
let freq = {};
for (num of array) {
freq[num] = (freq[num] || 0) + 1;
}
let sorted = Object.entries(freq).sort((a, b) => b[1] - a[1]);
if (sorted.length === 0 || sorted[0][1] !== sorted[1]?.[1]) {
return parseInt(sorted[0][0]);
}
return -1;
}
OX퀴즈
function solution(quiz) {
var answer = [];
for (let i = 0; i < quiz.length; i++) {
let arr = quiz[i].split(" ");
let num1 = parseInt(arr[0]);
let operator = arr[1];
let num2 = parseInt(arr[2]);
let result = parseInt(arr[4]);
let calc;
if (operator === "+") {
calc = num1 + num2;
} else if (operator === "-") {
calc = num1 - num2;
}
if (calc === result) {
answer.push("O");
} else {
answer.push("X");
}
}
return answer;
}
다음에 올 숫자
function solution(common) {
const dif = common[1] - common[0];
const ratio = common[1] / common[0];
if (common[2] - common[1] == dif) {
return common[common.length - 1] + dif;
}else {
return common[common.length - 1] * ratio;
}
}
연속된 수의 합
function solution(num, total) {
var answer = [];
let start = Math.floor(total / num - (num - 1) / 2);
for (let i = 0; i < num; i++) {
answer.push(start + i);
}
return answer;
}
분수의 덧셈
function solution(numer1, denom1, numer2, denom2) {
function gcd(a, b) {
if (b == 0) return a;
return gcd(b, a % b);
}
function lcm(a, b) {
return (a * b) / gcd(a, b);
}
let denom = lcm(denom1, denom2);
let nume = numer1 * (denom / denom1) + numer2 * (denom / denom2);
let divisor = gcd(nume, denom);
return [nume / divisor, denom / divisor];
}
안전지대
function solution(board) {
const n = board.length;
const m = board[0].length;
const directions = [[-1, 0], [1, 0], [0, -1], [0, 1], [-1, -1], [-1, 1], [1, -1], [1, 1]];
let danger = Array.from({ length: n }, () => Array(m).fill(false));
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
if (board[i][j] == 1) {
for (let [dx, dy] of directions) {
const ni = i + dx;
const nj = j + dy;
if (ni >= 0 && ni < n && nj >= 0 && nj < m) {
danger[ni][nj] = true;
}
}
}
}
}
let count = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
if (board[i][j] == 0 && !danger[i][j]) {
count++;
}
}
}
return count;
}
겹치는 선분의 길이
function solution(lines) {
let covered = Array(200);
for (let line of lines) {
let start = line[0] + 100;
let end = line[1] + 100;
for (let i = start; i < end; i++) {
covered[i] = (covered[i] || 0) + 1;
}
}
let length = 0;
for (let i = 0; i < 200; i++) {
if (covered[i] >= 2) {
length++;
}
}
return length;
}
평행
function solution(dots) {
const calcSlope = (point1, point2) => (point2[1] - point1[1]) / (point2[0] - point1[0]);
for (let i = 0; i < 3; i++) {
for (let j = i + 1; j < 4; j++) {
for (let k = 0; k < 3; k++) {
for (let l = k + 1; l < 4; l++) {
if (i !== k && i !== l && j !== k && j !== l) {
if (calcSlope(dots[i], dots[j]) === calcSlope(dots[k], dots[l])) {
return 1;
}
}
}
}
}
}
return 0;
}
옹알이 (1)
function solution(babbling) {
var answer = 0;
const sounds = ["aya","ye","woo","ma"];
babbling.forEach(word => {
let wordLength = word.length;
for(let i = 0 ; i < sounds.length ; i++) {
if(word.includes(sounds[i]))
wordLength = wordLength - sounds[i].length;
if(!wordLength) {
answer++;
break;
}
}
})
return answer;
}
머쓱이 획득

17, 18일 해커톤 참여로 이틀을 빠졌더니 몰아서 하는게 힘들었다. 시간날 때 조금씩 해둘걸... 다음부턴 몰아서 하는일 없도록 해야겠다.
'[LG 유플러스] 유레카 > 코딩테스트' 카테고리의 다른 글
[JS]프로그래머스 - 카펫 (Lv.2) (0) | 2025.02.20 |
---|---|
[JS]프로그래머스 - 최댓값과 최솟값 (Lv.2) (0) | 2025.02.20 |
[입문][JS][02.16] 프로그래머스 코딩테스트 (0) | 2025.02.16 |
[입문][JS][02.15] 프로그래머스 코딩테스트 (0) | 2025.02.15 |
[기초][JAVA][02.14] 프로그래머스 코딩테스트 (0) | 2025.02.14 |