Skip to content

Seperate steps to resolve nothing to commit #36

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1b3cb7b
Merge pull request #30 from codeisneverodd/cruelladevil-readme-test
codeisneverodd Apr 15, 2022
52e1a21
Add 소수-찾기.js
chaerin-dev Apr 15, 2022
ad54a6a
Add 문자열-다루기-기본.js
chaerin-dev Apr 15, 2022
b56e2c9
Add 문자열-내림차순으로-배치하기.js
chaerin-dev Apr 15, 2022
a9db3b3
Add 문자열-내-p와-y의-개수.js
chaerin-dev Apr 15, 2022
ed81e2b
Add 문자열-내-마음대로-정렬하기.js
chaerin-dev Apr 15, 2022
ee60a08
Add 나누어-떨어지는-숫자-배열.js
chaerin-dev Apr 15, 2022
8f5217f
Add 같은-숫자는-싫어.js
chaerin-dev Apr 15, 2022
163ec45
Add 가운데-글자-가져오기.js
chaerin-dev Apr 15, 2022
65b6229
Update README template 변경
codeisneverodd Apr 16, 2022
26ac17e
Automatic Update README.md
invalid-email-address Apr 16, 2022
10bba3e
Merge pull request #32 from codeisneverodd/chaerin-dev
chaerin-dev Apr 18, 2022
ab5aeca
Add 220418 최댓값과-최솟값 1개의 풀이 추가
jaewon1676 Apr 18, 2022
14860ae
Create 220418 n^2-배열-자르기 파일 생성 후 1개의 풀이 추가
jaewon1676 Apr 18, 2022
531ffdb
Create 220418 단속카메라 파일 생성 후 1개의 풀이 추가
jaewon1676 Apr 18, 2022
5b64e15
Add 220418 카펫 1개의 풀이 추가
jaewon1676 Apr 18, 2022
22af6f2
Add 220418 소수-만들기 1개의 풀이 추가
jaewon1676 Apr 18, 2022
b598c1e
Add 220418 체육복 1개의 풀이 추가
jaewon1676 Apr 18, 2022
1725b3d
Add 220418 JadenCase-문자열-만들기.js 1개의 풀이 추가
jaewon1676 Apr 18, 2022
8ee3128
Automatic Update README.md
invalid-email-address Apr 18, 2022
c5f836f
Merge pull request #34 from jaewon1676/main
jaewon1676 Apr 19, 2022
e13ee0b
Seperate steps to resolve nothing to commit
cruelladevil Apr 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/update-README.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,14 @@ jobs:
run: npm install
- name: build README.md
run: npm run build
- name: get diff
id: get_diff
run: |
git diff --quiet ./README.md || echo "::set-output name=new_changes_exist::true"
- name: update README.md
if: steps.get_diff.outputs.new_changes_exist == 'true'
run: |
git add .
git add ./README.md
git config user.name github-actions
git config user.email [email protected]
git commit -m "Automatic Update README.md"
Expand Down
91 changes: 47 additions & 44 deletions README.md

Large diffs are not rendered by default.

10 changes: 9 additions & 1 deletion level-1/가운데-글자-가져오기.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,12 @@ function solution(s) {
// 홀수인 경우 - 중간지점
else answer = s[point];
return answer;
}
}

// 정답 4 - chaerin-dev
function solution(s) {
return s.length % 2
? s[parseInt(s.length / 2)]
: s[s.length / 2 - 1] + s[s.length / 2];
}

10 changes: 9 additions & 1 deletion level-1/같은-숫자는-싫어.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,12 @@ function solution(arr) {
answer[answer.length - 1] !== arr[i] ? answer.push(arr[i]) : null
}
return answer;
}
}

//정답 3 - chaerin-dev
function solution(arr) {
// 콜백함수의 조건을 만족하는 '모든' 값을 배열로 반환하고,
// 조건을 만족하는 값이 없으면 빈 배열을 반환하는 filter 메서드 활용
// 첫 번째 요소의 경우 undefined와 비교
return arr.filter((item, index) => item !== arr[index - 1]);
}
9 changes: 9 additions & 0 deletions level-1/나누어-떨어지는-숫자-배열.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,13 @@ function solution(arr, divisor) {
answer.length === 0 ? answer.push(-1) : null
answer.sort((a, b) => a - b)
return answer;
}

//정답 3. chaerin-dev
function solution(arr, divisor) {
let answer = [];
arr.forEach((e) => {
if (e % divisor === 0) answer.push(e);
});
return answer.length ? answer.sort((a, b) => a - b) : [-1];
}
10 changes: 10 additions & 0 deletions level-1/문자열-내-p와-y의-개수.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,13 @@ function solution(s) {

return p == y ? true : false;
}

//정답 3 - chaerin-dev
function solution(s) {
let pCount = s.split(/p/i).length - 1;
let yCount = s.split(/y/i).length - 1;
return pCount === yCount;
}
// 문자열에서 특정 문자의 개수를 구하려면 split을 사용하면 된다.
// Ex. "ababb".split("a") 의 결과는 ["", "b", "bb"]
// => 즉, "a"의 갯수는 3에서 1을 뺀 2
13 changes: 12 additions & 1 deletion level-1/문자열-내-마음대로-정렬하기.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,15 @@ function solution(strings, n) {
return 0
})
return answer;
}
}

//정답 2 - chaerin-dev
function solution(strings, n) {
return strings.sort((a, b) => {
// 인덱스 n번째 글자를 기준으로 오름차순 정렬
if (a[n] > b[n]) return 1;
else if (a[n] < b[n]) return -1;
// 인덱스 n번째 글자가 같으면 사전순 정렬
else return a > b ? 1 : -1;
});
}
13 changes: 12 additions & 1 deletion level-1/문자열-내림차순으로-배치하기.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,15 @@ function solution(s) {
return 0
}).join('')
return answer;
}
}

//정답 2 - chaerin-dev
function solution(s) {
// 문자열 -> 배열 -> 정렬 -> 순서뒤집기 -> 문자열
return s.split("").sort().reverse().join("");
}

//정답3 - chaerin-dev
function solution(s) {
return s.split("").sort((a, b) => (a < b ? 1 : -1)).join("");
}
13 changes: 13 additions & 0 deletions level-1/문자열-다루기-기본.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,16 @@ function solution(s) {

return answer;
}

//정답 4 - chaerin-dev
function solution(s) {
// 길이가 4 혹은 6이 아니면 false 반환
if (s.length !== 4 && s.length !== 6) return false;
// 각 자리중에 숫자가 아닌 것이 하나라도 있으면 false 반환
for (let i = 0; i < s.length; i++) {
if (isNaN(Number(s[i]))) return false;
}
// 위의 모든 조건에 포함되지 않으면
// (길이가 4 혹은 6이고, 숫자로만 구성되어 있으면) true 반환
return true;
}
30 changes: 29 additions & 1 deletion level-1/소수-만들기.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,32 @@ function isPrime(num) {
if (num % i === 0) return false
}
return true
}
}

//정답 2 - jaewon1676
// https://programmers.co.kr/learn/courses/30/lessons/12977?language=javascript

function solution(nums) {
let len = nums.length, answer = 0;

for (let i = 0; i < len - 2; i++) {
for (let j = i + 1; j < len - 1; j++) {
for (let k = j + 1; k < len; k++) {
if (isPrime(nums[i] + nums[j] + nums[k])) {
answer++;
}
}
}
}
return answer;
}

const isPrime = (n) => {
for (let i = 2; i <= Math.sqrt(n); i++) { //n의 제곱근까지 순회
if (n % i === 0) { // 나머지가 0이 나오면 소수가 아니다.
return false;
}
}
return true;
}
// 세개의 수를 더해야 하기때문에 수 for문 하나당 수 하나를 넣어서 순회하였다.
19 changes: 19 additions & 0 deletions level-1/소수-찾기.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,23 @@ function solution(n) {
for (const isPrime of isPrimeArr) if (isPrime) answer += 1
answer -= 2 //인덱스 0과 1 제외
return answer;
}

//정답 2 - chaerin-dev
// 소수인지 판별하는 함수
function isPrime(x) {
for (let i = 2; i <= Math.sqrt(x); i++) {
if (x % i === 0) return false;
}
return true;
}
function solution(n) {
// 소수의 개수를 저장할 변수
let answer = 0;
// 1은 소수가 아니므로 2부터 n까지 모든 수에 대해
for (let i = 2; i <= n; i++) {
// 소수이면 소수의 개수에 1 추가
if (isPrime(i)) answer++;
}
return answer;
}
27 changes: 26 additions & 1 deletion level-1/체육복.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,29 @@ function solution(n, lost, reserve) {
}
// 체육복 1개 이상을 가진 학생들의 수 반환
return students.filter((v => v >= 1)).length;
}
}

//정답 3 - jaewon1676
function solution(n, lost, reserve) {
let answer = Array(n).fill(1) // n만큼의 배열을 만들어서 1을 만들어줍니다
let cnt = 0;
for(let i = 0; i < reserve.length; i++){ // reserve 를 순회하며 체육복
answer[reserve[i]-1] += 1
}
for(let i = 0; i < lost.length; i++){ // lost 를 순회하며 체육복 수를 -1
answer[lost[i]-1] -= 1
}
for(let i = 0; i < n; i++){ // n을 순회하며 앞사람과 뒷사람의 체육복 수를 비교한다.
if (answer[i] == 2 && answer[i+1] == 0 || answer[i+1] == 2 && answer[i] == 0){
answer[i] = 1
answer[i+1] = 1
}
}
for(let i = 0; i < answer.length; i++){
(answer[i] >= 1 ? cnt += 1 : null)
}
return cnt
}
//그리디
// lost 배열과 reserve 배열을 순회하여 체육복을 추가, 제거 해줍니다.
// 그 후에 최종적으로 i부터 n까지 for문을 순회하며 i번쨰 학생과 i+1번째의 학생이 가진 체육복 수를 비교하여 빌려 줄 수 있는지, 빌려줄 수 없는지 확인 합니다.
17 changes: 16 additions & 1 deletion level-2/JadenCase-문자열-만들기.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,19 @@ function solution(s) {
answer = s.split(' ').map(word => word.charAt(0).toUpperCase() + word.substring(1).toLowerCase()).join(' ')
//word[0]은 빈 문자열을 만나면 undefined를, word.charAt(0)은 빈 문자열을 만나면 빈 문자열을 반환한다.
return answer;
}
}

//정답 2 - jaewon1676
function solution(s) {
s = s.split(' ').map(el => el.split('').map((el, index) =>
index == 0 ? el.toUpperCase() : el.toLowerCase()).join('')).join(' ')
return s;
}
// 문자열을 연습하기에 좋은 문제입니다.

// s.split(' ') // 띄어쓰기를 기준으로 나눕니다.
// .map(el => el.split('')) 나눈 덩어리를 다시 요소 하나 하나씩 나눠줍니다
// .map((el, index) => index == 0 ? el.toUpperCase() : el.toLowerCase())
// 덩어리의 요소가 첫번째이면 대문자, 그렇지 않으면 소문자로 변환 해줍니다.
// .join('') 작은 배열들을 합쳐줍니다.
// .join(' ') 큰 배열들을 합쳐줍니다.
13 changes: 13 additions & 0 deletions level-2/n^2-배열-자르기.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//https://github.com/codeisneverodd/programmers-coding-test
//완벽한 정답이 아닙니다.
//정답 1 - jaewon1676
function solution (n, left, right) {
const answer = [];

for (let i=left; i <= right; i++) { // left부터 right까지를 구한다.
let row = parseInt(i/n); // 행(row)을 구한다.
let column = i%n; // 열(column)을 구한다.
answer.push(Math.max(row, column) + 1) // 행과 열중 큰 값을 푸시한다.
}
return answer
}
9 changes: 9 additions & 0 deletions level-2/최댓값과-최솟값.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,13 @@ function solution(s) {
const arr = s.split(' ').map(x => parseInt(x, 10)).sort((a, b) => a - b)
answer = arr[0] + ' ' + arr[arr.length - 1]
return answer;
}

//정답 3 - jaewon1676
function solution(s) {
s = s.split(' ')
s.sort((a, b) => {return a - b}) // 오름차순 정렬
let small = s[0] // s의 최솟값
let large = s[s.length - 1] // s의 최댓값
return (small + ' ' + large)
}
28 changes: 27 additions & 1 deletion level-2/카펫.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,30 @@ function widthHeightPair(size) {
let result = []
for (let i = 1; i <= Math.sqrt(size); i++) if (size % i === 0) result.push([size / i, i])
return result
}
}

//정답 2 - jaewon1676
function solution(brown, yellow) {
var answer = [];
let sum = brown + yellow;

//카펫의 최소높이는 3부터이다.(테두리 갈색, 가운데 노란색)
for(let height=3; height<brown/2; height++){
//전체 크기에서 높이로 나눌때 나머지가 없을경우만 진행
if(sum % height === 0){
//가로길이
let weight = sum / height;
//테두리를 제외한 길이를 구해야하기 때문에 각각 -2해준뒤 곱셈 하여 답을 구한다.
if( (height-2) * (weight-2) === yellow){
return [weight, height];
}
}
}
return answer;
}
// 완전탐색

// 문제 설명에서의 중앙은 노란색, 테두리는 갈색이 포인트입니다.
// 갈색은 항상 노란색의 가로 세로 크기보다 +2 만큼 큽니다.
// 따라서 높이는 전체 테두리/2보다 작으므로
// 3부터 brown/2 를 순회합니다.
34 changes: 34 additions & 0 deletions level-3/단속카메라.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//https://github.com/codeisneverodd/programmers-coding-test
//완벽한 정답이 아닙니다.
//정답 1 - jaewon1676
function solution(routes) {
let cctv = 1; // cctv의 개수는 최소 1개
routes.sort((a, b) => a[0] - b[0]); // 고속도로 진입 시점을 기준으로 오름차순 정렬
// [ [ -20, -15 ], [ -18, -13 ], [ -14, -5 ], [ -5, -3 ] ]
let out = routes[0][1]; // -15
// 나간 시점(out)은 첫 차량의 나간시점으로 초기화

for(let i = 1; i < routes.length; i++) {
// 나간 시점(out)보다 현재 차량의 진입이 느리다면 카메라 추가 설치
if(out < routes[i][0]) {
cctv++;
out = routes[i][1]; // out 시점 업데이트
}

// 나간 시점(out)이 현재 차량의 진출시점보다 큰 경우
if(out > routes[i][1]) {
out = routes[i][1]; // out 시점 업데이트
}
}

return cctv;
}
// 그리디

// 우리는 카메라를 최소로 설치 해야합니다. 그러기 위해서는 고속도로 진입 시점을 기준으로 오름차순 정렬을(빨리 진입한 순) 합니다.
// 이렇게 되면 배열에 있는 모든 고속도로 진입 시점은 배열의 첫번째 고속도로 진입 시점보다 더 뒤에 있습니다. 그러므로 우리는
// 나간시점만 검사 해주면 됩니다.

// 먼저 첫번째 routes의 고속도로를 빠져나간 시점을 out 변수에 담아줍니다.
// 이 out 변수를 두번째 routes의 고속도로를 빠져나간 시점과 비교하여 out 변수보다 route[i][1]가 크면 ( 나간 시간이 느리면)
// cctv를 하나 늘려줍니다. , out 변수를 갱신 하며 세번째, 네번째도 계속 비교해줍니다.
3 changes: 2 additions & 1 deletion utils/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ const FILE_TO_UPDATE = path.resolve(__dirname, "./README.md");
const updateData = `# 프로그래머스 모든 문제 풀이
[![방문자수](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://github.com/codeisneverodd/programmers-coding-test&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=방문자수(Today/Total)&edge_flat=true)](https://github.com/codeisneverodd)

> 😁 **도움이 되셨다면** 오른쪽 상단 ↗ 의 ⭐️ **Star를 클릭**해 이 프로젝트를 응원해주세요!

🌱 프로그래머스의 [코딩테스트 문제](https://programmers.co.kr/learn/challenges?tab=all_challenges)의 문제 풀이를 찾으실 수 있습니다.

🌱 모든 문제는 JavaScript로 풀이되며, 원하는 풀이는 **아래에서 검색 🔎**을 통해 찾으실 수 있습니다
Expand Down Expand Up @@ -37,7 +39,6 @@ const updateData = `# 프로그래머스 모든 문제 풀이
| ------------------------------------------- | ------- |
| [createhb21](https://github.com/createhb21) | 🚧 |

## 😁 **도움이 되셨다면** 오른쪽 상단 ↗ 의 ⭐️ **Star를 클릭**해 이 프로젝트를 응원해주세요!

## Control + F 혹은 Cmd + F 를 통해 원하는 문제의 풀이를 찾아보세요!

Expand Down