전체 글 204

[Javascript] 배열

배열: 연관성 있는 것들의 리스트 배열 선언 방법: [], new Array 사용1) const travel_spot = ['방콕', '뉴욕', '파리'];2) const travel_spot = new Array('방콕', '뉴욕', '파리');3) 빈 배열 선언 후 값 추가const travel_spot = []; (const travel_spot = new Array();)travel_spot[0] = '방콕';travel_spot[1] = '뉴욕';travel_spot[2] = '파리'; 배열 접근: index 사용 (0부터 시작) 배열 추가 - push, unshift, splice (const 사용 시 재할당 불가능 but 기존 배열 수정하는 것은 가능) push: 배열 뒤에 원소 추가 (반환..

Web/Javascript 2022.03.26

[Javascript] 변수, 자료형, 연산자

변수 - 선언, 초기화, 재할당 선언: 정의하는 것 초기화: 정의한 변수에 넣는 첫 번째 값 재할당: 값이 들어간 변수에 다른 값을 넣는 것 변수 선언 방법: const, let const: 변하지 않는 데이터 값을 넣을 때 let: 데이터 값이 변할 때 const와 let 차이: 재할당 가능한지 자료형 (자바스크립트의 데이터 타입) - 8가지 [string, number, bigInt, boolean, symbol, null, undefined, object] - string (문자열): 작은따옴표나 큰 따옴표로 표현 가능 (문자뿐만 아니라 숫자와 특수문자도 가능) - number (숫자) - bigInt (number 값이 안정적으로 나타낼 수 있는 최대치인 2^53-1보다 큰 정수) - boolea..

Web/Javascript 2022.03.26

[백준 #16953] A → B (C++)

https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net A와 B의 값이 같을 때는 break를 사용해 while 문을 종료시키고, A가 B보다 크거나, B가 1로 끝나지 않고 2로 나누어 떨어지지 않을 때는 -1을 출력하게 했다. 그리고 B가 1로 끝나면 마지막 자릿수(1)를 제외한 값을 B에 넣어주었고, B가 2로 나누어 떨어지면 B를 2로 나눈 값을 B에 넣어주었다. 위 두개의 연산을 할 때마다 cnt++를 실행해주었고, 출력 조건이 필요한 연산의 최솟값에 1을 더한 값을 출력하는 것이므로 cnt의 초깃값을 0이 아닌 1로 설정해주었다. *** B가 1로 끝나는지 판단하기..

[백준 #10610] 30 (C++)

https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 가장 먼저 입력받은 문자열에 문자마다 -'0'을 하여 정수형으로 바꿔주고 int 형 배열에 넣어주었다. 그리고 가장 큰 수를 만들기 위해 내림차순으로 배열을 정렬한 후, 배열에 있는 값을 다 더하고 이것이 3의 배수이면서 마지막 숫자가 0이라면 30의 배수이기 때문에 그 배열을 차례로 출력하였고, 만약 아니라면 -1을 출력해주었다. 문자열 길이만큼의 크기를 가진 정수형 배열을 선언하기 위해 new를..

[백준 #11047] 동전 0 (C++)

https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 동전의 종류 N개와 동전으로 만들 합 K를 입력하고 for 문을 사용해 N가지의 동전 값을 입력받아 K보다 작은 것들만 벡터에 넣어주었다. (K보다 큰 동전 값은 필요가 없기 때문이다.) 그리고 큰 동전 값부터 나누기 위해 reverse를 사용하여 벡터를 내림차순으로 정렬시켰다. (동전 값을 오름차순으로 입력했기 때문) 그다음 for..

[백준 #1158] 요세푸스 문제 (C++)

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제에서는 n이 7, k가 3이기 때문에 1부터 7까지 큐에 넣어주고 큐 사이즈가 1보다 클 때 까지 for문을 돌며 0, 1 번째 인덱스 원소는 큐에 다시 추가해준 후 앞에서 제거하고 2번째 인덱스 (즉 k번째 사람)은 출력 후 제거해주었다. 그리고 큐 안에 원소가 하나만 남았을 때 while문을 나와 해당 요소를 출력 후 제거해주었다. 출력 형식이 여서 마지막 출력 값에는 ',' 을 붙이지 않기 위해 한 것이다. 1 2 3 4 5 6 7 3 4 5 6 7 1 2 4 ..

[백준 #10825] 국영수 (C++)

https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 이름, 국어, 영어, 수학을 한 쌍으로 묶기 위해 구조체를 사용하였다. student라는 구조체 안에 이름, 국어 점수, 영어 점수, 수학 점수를 넣어주어 만들었고 메인에서 학생의 수(n)를 입력받고 구조체를 동적으로 할당해주었다. student* st = new student[n]; 그리고 문제에 나와있는 조건에 맞게 cmp 함수를 만들어 구조체를 정렬시킬 때 cmp를 넣어..

[백준 #10816] 숫자 카드 2 (C++)

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 이 문제는 upper_bound와 lower_bound를 사용하여 풀었다. upper_bound와 lower_bound는 이진 탐색을 기반으로 하는 탐색 방법으로, upper_bound는 찾으려는 원소보다 큰 숫자가 처음 나오는 위치를 lower_bound는 찾으려는 원소가 처음 나오는 위치 (없다면 그거보다 큰 원소가 처음 나오는 위치)를 알려주는 것이다. 처음..

[백준 #10867] 중복 빼고 정렬하기 (C++)

https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 중복을 제거하는 것이 가장 중요한데, 이를 위해 unique()를 사용했다. 가장 먼저 수의 개수(n)를 입력받고 크기가 n인 벡터 v를 선언하여 for문을 통해 벡터에 숫자를 넣어주었다. 그다음 unique를 사용하기 위해 sort()로 벡터를 정렬해주고 erase와 unique를 사용하여 중복된 원소를 제거하고 벡터의 사이즈를 다시 설정해주었다. ** unique 함수는 중복된 원소를 제거해주지만, 벡터에 사이즈까지 동적으..

[백준 #1181] 단어 정렬 (C++)

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 단어를 입력해서 벡터에 넣은 후 sort를 사용하여 정렬해 주었다. 이때 cmp라는 함수를 만들어 단어의 길이가 짧은 것부터 정렬하고, 단어의 길이가 같을 시에는 사전 순으로 정렬해 주었다. 그다음 중복되는 단어를 제거하기 위해 unique와 erase를 함께 사용하였다. unique는 중복된 원소를 제거해주지만 벡터에 사이즈까지 동적으로 줄여주지 않기 때문에 벡터의 빈 공간을 없애기 ..