
Link 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 문제 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다. 상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다. ..

Link 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 > 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다. 출..

Link 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 > 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 > 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. | 예제 입력 Mississipi | 예제 출력 ..

Link 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 > 첫째 줄에 테스트 케이스의 ..

코딩테스트 연습 - 짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" programmers.co.kr | 제출 function solution(num) { return num % 2 === 0 ? 'Even' : 'Odd' } | 풀이과정 num을 나누었을 때 나머지가 0이면 짝수이므로 Even을, 그렇지 않으면 홀수이므로 Odd를 반환한다. 0 % 2 = 0 이므로 짝수로 인식되어 코드 한 줄로 문제를 풀 수 있다. | 개념 삼항연산자 if문의 축약된 형태 ?(물음표) 앞에 조건문이 들어가고 그..

코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr | 제출 function solution(n, m) { const gcd = (a, b) => { return b == 0 ? a : gcd(b, a % b); } const lcm = (a, b) => (a * b) / gcd(a, b); return [gcd(n, m), lcm(n, m)]; } | 풀이과정 최대공약수는 유클리드 호제법을 사용해서 쉽게 구할 수 있다. 두 수 m과 n이 있을 때 m * n = 최대공약수 * 최소..

| 최대공약수와 최소공배수 60과 48의 최대공약수는 좌측의 값들을 곱한 2 * 2 * 3 = 12 이고, 최소공배수는 12 * 5 * 4 = 240이다. 따라서, 최대공약수(Greatest Common Divisor, GCD)와 최소공배수(Lowest Common Multiple, LCM)를 곱한 값은 주어진 두 수의 곱과 같다는 식이 성립된다. | 최대공약수 구하기, 유클리드 호제법 유클리드 호제법이란 자연수의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 두 수가 서로(互) 상대방 수를 나누어(除)서 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수 a, b에 대해서 a가 b보다 클 때 a를 b로 나눈 나머지를 r이라 하면, a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 ..

코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2 programmers.co.kr | 제출 function solution(num) { let count = 0; if(num === 1){ return 0; } while(num !== 1){ if(num % 2 === 0){ num = num / 2; } else{ num = num * 3 + 1; } count ++; } return count > 500 ? -1 : count; } | 풀이과정 입력된 숫자가 1이면 0을 반환하고, 1이 아니라면 반복적인 작..

코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr | 제출 function solution(arr) { return arr.reduce((a, b) => a + b) / arr.length; } | 풀이과정 reduce() 메서드를 사용해서 배열의 모든 값을 더해준 후, 배열의 길이로 나누어 평균을 구한다. | 개념 Array.prototype.reduce() 배열의 각 요소에 대해 주어진 reducer 함수를 실행한 결과값을 반환한다. 더보기 - 개..

코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr | 제출 function solution(x) { let answer = true; let sum = 0; for (let i = 0; i < String(x).length; i++) { sum += Number(String(x)[i]); } answer = x % sum === 0; return answer; } | 풀이과정 숫자인 x를 String으로 형 변환 후 각 자리수를 sum에 더한다. x를 sum으로 나누어 떨어지면 하샤드..