티스토리 뷰
완주하지 못한 선수
function solution(participant, completion) {
participant.sort();
completion.sort();
for(let i=0;i<participant.length;i++){
if(participant[i]!==completion[i]){
return participant[i];
}
}
}
programmers.co.kr/learn/courses/30/lessons/42576
모의고사
function solution(answers) {
let check=[];
let correct=[];
check[0]=[1,2,3,4,5];
check[1]=[2,1,2,3,2,4,2,5];
check[2]=[3,3,1,1,2,2,4,4,5,5];
for(let i=0;i<3;i++){
correct[i]=answers.filter((value,j)=>value===check[i][j%check[i].length]).length;
}
const max=Math.max(correct[0],correct[1],correct[2]);
let answer=[];
for(let i=0;i<3;i++){
correct[i]===max && answer.push(i+1);
}
return answer;
}
programmers.co.kr/learn/courses/30/lessons/42840
체육복
function solution(n, lost, reserve) {
let arr=new Array(n).fill(1);
for(let i=0;i<lost.length;i++){
arr[lost[i]-1]=0;
}
for(let i=0;i<reserve.length;i++){
arr[reserve[i]-1]+=1;
}
for(let i=0;i<n;i++){
if(arr[i-1]===2&&arr[i]===0){
arr[i-1]=1; arr[i]=1;
}else if(arr[i]===0&&arr[i+1]===2){
arr[i]=1;arr[i+1]=1;
}
}
return arr.filter((value)=>value>0).length;
}
programmers.co.kr/learn/courses/30/lessons/42862
k번째 수
function solution(array, commands) {
return commands.map(command=>(
array.slice(command[0]-1,command[1]).sort((a,b)=>a-b)[command[2]-1]
));
}
programmers.co.kr/learn/courses/30/lessons/42748
2016년
function solution(a, b) {
const arr = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
return arr[new Date(2016,a-1,b).getDay()];
}
programmers.co.kr/learn/courses/30/lessons/12901
가운데 글자 가져오기
function solution(s) {
return s.length%2===0 ? s.slice(s.length/2-1,s.length/2+1) : s[parseInt(s.length/2)];
return s.substr(Math.ceil(s.length/2)-1, s.length%2===0 ? 2 : 1); //이렇게 해두 돼
}
programmers.co.kr/learn/courses/30/lessons/12903
같은 숫자는 싫어
function solution(arr){
return arr.filter((value,i)=>value!==arr[i+1]);
}
programmers.co.kr/learn/courses/30/lessons/12906
나누어 떨어지는 숫자 배열
function solution(arr, divisor) {
const answer=arr.filter((value)=>value%divisor===0).sort((a,b)=>a-b);
return answer.length!==0 ? answer : [-1];
}
programmers.co.kr/learn/courses/30/lessons/12910
두 정수 사이의 합
function solution(a, b) {
let answer=0;
for(let i=Math.min(a,b);i<=Math.max(a,b);i++){
answer+=i;
}
return answer;
}
이런것도 가능하네.. 제로초님
function solution(a, b) {
a > b && ([a, b] = [b, a]);
return Array(b - a + 1).fill().map((v, i) => v + i).reduce((a, c) => a + c);
}
programmers.co.kr/learn/courses/30/lessons/12912
문자열 내 마음대로 정렬하기
function solution(strings, n) {
return strings.sort((a,b)=>{
if(a[n]===b[n]){
return (a > b) - (a < b);
}
else{
return (a[n]>b[n])-(a[n]<b[n]);
}
})
}
사전식 정렬 localeCompare
function solution(strings, n) {
return strings.sort((a,b)=>
a[n]===b[n] ? a.localeCompare(b) : a[n].localeCompare(b[n])
)
}
programmers.co.kr/learn/courses/30/lessons/12915
문자열 내 p와 y의 개수
function solution(s){
const arr=s.toUpperCase();
let num=[0,0];
for(let i=0;i<arr.length;i++){
if(arr[i]==='P'){
num[0]++;
} else if(arr[i]==='Y'){
num[1]++;
}
}
return num[0]===num[1];
}
includes 사용 -- 제로초님
function solution(s) {
const p = s.split('').filter(v => ['p', 'P'].includes(v));
const y = s.split('').filter(v => ['y', 'Y'].includes(v));
return p.length === y.length;
}
정규식 -- 타임에러
function solution(s){
return s.match(/p/ig).length===s.match(/y/ig).length;
}
근데 이건 돼 -- 위에가 p, y가 존재하지 않을 때 에러는 이해가 되는데 왜 타임에러??
function solution(s){
return s.replace(/p/gi, '').length == s.replace(/y/gi, '').length;
}
programmers.co.kr/learn/courses/30/lessons/12916
문자열 내림차순으로 배치하기
function solution(s) {
return s.split('').sort().reverse().join('');
}
programmers.co.kr/learn/courses/30/lessons/12917
문자열 다루기 기본 -- includes... 메모
function solution(s) {
return [4,6].includes(s.length) && parseInt(s)==s;
}
programmers.co.kr/learn/courses/30/lessons/12918
서울에서 김서방 찾기
function solution(seoul) {
return "김서방은 "+seoul.indexOf('Kim')+"에 있다";
}
programmers.co.kr/learn/courses/30/lessons/12919
소수찾기
기본 코드 -- 실패
function solution(n) {
let count=0;
for(let i=2;i<=n;i++){
if(isPrime(i)){
count++;
}
}
return count;
}
function isPrime(n){
if(n<2) return false;
for(let i=2;i<=n/2;i++){
if(n%i===0){
return false;
}
}
return true;
}
향상된 코드 -- 배열에 모두 1을 집어넣은 후 소수인 index의 배열에 0을 대입
function solution(n) {
let count=0;
let arr=new Array(n+1).fill(1);
for(let i=2;i<=n;i++){
if(arr[i]!==0){
for(let j=i*2;j<=n;j+=i){
arr[j]=0;
}
}
}
for(let i=2;i<=n;i++){
if(arr[i]!==0){
count++;
}
}
return count;
}
programmers.co.kr/learn/courses/30/lessons/12921
수박수박수박수박수박수?
function solution(n) {
let answer="";
for(let i=0;i<n;i++){
i%2===0 ? answer+="수" : answer+="박";
}
return answer;
}
repeat 사용
function solution(n) {
return '수박'.repeat(n).substr(0, n);
}
programmers.co.kr/learn/courses/30/lessons/12922
문자열을 정수로 바꾸기
function solution(s) {
return +s;
}
programmers.co.kr/learn/courses/30/lessons/12925
시저 암호 -- 아스키 코드 사용. 변환 코드나 아스키 코드는 구글링. 아스키 코드 표를 보고 조금만 생각하면 답나옴
function solution(s, n) {
let answer="";
for(let i=0;i<s.length;i++){
if(s[i]===" "){
answer+=" ";
}
else{
answer+=String.fromCharCode((s.charCodeAt(i)>=97)
? (s.charCodeAt(i)+n-97)%26+97 : (s.charCodeAt(i)+n-65)%26+65
);
}
}
return answer;
}
programmers.co.kr/learn/courses/30/lessons/12926
약수의 합
function solution(n) {
let answer=0;
for(let i=1;i<=n;i++){
if(n%i===0){
answer+=i;
}
}
return answer;
}
리듀스 사용 -- 리듀스 알면서 안쓰는데 의식하고 쓰자
function solution(n) {
return Array(n).fill().map((x,index)=>index+1).reduce((a,b)=>n%b ? a : a+b);
}
programmers.co.kr/learn/courses/30/lessons/12928
이상한 문자 만들기 -- split, map을 활용했다. 아직 이해가 되지 않는다면 for문 쓰면 됩니다
function solution(s) {
return s.split(' ').map(word=>word.split('').map((letter,i)=>
i%2===0 ? letter.toUpperCase():letter.toLowerCase()
).join('')).join(' ');
}
programmers.co.kr/learn/courses/30/lessons/12930
자릿수 더하기
function solution(n){
let answer=0;
n=n+"";
for(let i=0;i<n.length;i++){
answer+=+n[i];
}
return answer;
}
programmers.co.kr/learn/courses/30/lessons/12931
자연수 뒤집어 배열로 바꾸기
function solution(n) {
return String(n).split('').reverse().map(i=>+i);
}
programmers.co.kr/learn/courses/30/lessons/12932
정수 내림차순으로 배치하기
function solution(n) {
return String(n).split('').sort((a,b)=>b-a).join('')*1;
}
programmers.co.kr/learn/courses/30/lessons/12933
정수 제곱근 판별
function solution(n) {
const root=Math.sqrt(n);
return Number.isInteger(root) ? (root+1)**2 : -1
}
programmers.co.kr/learn/courses/30/lessons/12934
제일 작은 수 제거하기
function solution(arr) {
const min=Math.min(...arr);
const filArr=arr.filter(i=>i!==min);
return filArr.length ? filArr : [-1];
}
programmers.co.kr/learn/courses/30/lessons/12935
짝수와 홀수
function solution(num) {
return num%2===0 ? "Even" : "Odd";
}
programmers.co.kr/learn/courses/30/lessons/12937
최대공약수와 최소공배수 -- 유클리드 호제법
function cGCD(a, b){
console.log(a,b);
return b ? cGCD(b, a%b) : a;
}
function solution(n, m) {
const gcd=cGCD(n,m);
return [gcd,n*m/gcd];
}
programmers.co.kr/learn/courses/30/lessons/12940
콜라즈 추측
function solution(num) {
let count=0;
while(num!==1){
num%2===0 ? num/=2 : num=num*3+1;
count++;
if(count===500){
return -1;
}
}
return count;
}
programmers.co.kr/learn/courses/30/lessons/12943
평균 구하기
function solution(arr) {
return arr.reduce((acc,cur) => acc+cur)/arr.length;
}
programmers.co.kr/learn/courses/30/lessons/12944
하샤드 수
function solution(x) {
return !(x%String(x).split('').reduce((acc,cur) => acc + cur*1, 0));
}
programmers.co.kr/learn/courses/30/lessons/12947
핸드폰 번호 가리기
function solution(phone_number) {
return '*'.repeat(phone_number.length-4)+phone_number.slice(-4);
}
programmers.co.kr/learn/courses/30/lessons/12948
행렬의 덧셈
function solution(arr1, arr2) {
return arr1.map((ar1,i) => ar1.map((a1,j) => a1+arr2[i][j]));
}
programmers.co.kr/learn/courses/30/lessons/12950
x만큼 간격이 있는 n개의 숫자
function solution(x, n) {
return Array(n).fill(x).map((val,idx) => val*(idx+1));
}
programmers.co.kr/learn/courses/30/lessons/12954
직사각형 별찍기
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
console.log(solution(a,b));
function solution(a,b){
return Array(b).fill().map(i => '*'.repeat(a)).join('\n');
}
});
programmers.co.kr/learn/courses/30/lessons/12969
모든 문제는 제가 풀어서 정확하지 않거나 효율적이지 않은 코드가 있을 수 있습니다.
다른 사람 코드를 참조한 경우에는 설명에 적어놓았습니다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 2단계 답지1 (0) | 2020.12.29 |
---|---|
프로그래머스 1단계 답지2 (0) | 2020.12.27 |
코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > [1차] 뉴스 클러스터링 (0) | 2020.08.28 |
코딩테스트 연습 > 2017 팁스타운 > 예상 대진표 (0) | 2020.08.27 |
코딩테스트 연습 > Summer/Winter Coding(2019) > 멀쩡한 사각형 (0) | 2020.08.25 |