✔️ 문제 : autoplay 태그를 추가해도 비디오 자동 재생이 안 됨


📌 크롬은 음소거 muted="muted"를 넣어줘야만 자동 재생이 된다고 합니다.

<video autoplay="autoplay" muted="muted">
...
</video>

🔎 사파리와 크롬의 브라운저 엔진 자체의 정책에서 기본적으로 음소거를 진행하지 않으면, 비디오를 자동 재생(play) 제한이 있기에, 음소거 요소를 추가해 줘야 합니다.


✔️ 적용 후

 

🧾 참고사이트 : https://blog.edit.kr/entry/video-%ED%83%9C%EA%B7%B8-autoplay-%EC%9E%AC%EC%83%9D%EC%9D%B4-%EC%95%88%EB%90%A0%EB%95%8C-Chrome-Safari

⭐️ 문제

⭐️ 풀이

📌 단어 단어의 길이 pair로 선언하고, vector에 순서대로 넣은 다음 단어의 길이를 기준으로 정렬하는 코드 작성


⭐️ 코드

#include<bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N = 0;
	string str;
	vector<pair<int, string>> v;

	cin >> N;

	for (int i{ 0 }; i < N; i++) {
		cin >> str;
		v.push_back(pair<int, string>(str.length(), str));
	}
	sort(v.begin(), v.end());

	cout << v[0].second << endl;

	for (int j{ 1 }; j < N; j++) {
		if (v[j].second == v[j - 1].second) {
			continue;
		}
		else {
			cout << v[j].second << endl;
		}
		
	}
}

 

 

💡 2차원 벡터 선언

📌 vector 컨테이너에 pair을 통해 2차원 배열을 만들 수 있음

vector<pair<int, int>> v;

📌벡터 v가 입력받는 게 ('a', 1), ('b',2) 라면?

▶️ <int, int> 대신 아래와 같이 <char, int>로 수정해 주면 된다.

vector<pair<char, int>> v;

💡 벡터 정렬

📌 정렬은 STL의 sort를 이용

sort(v.begin(), v.end()); // 오름차순
sort(v.begin(), v.end(), less<>()); // 오름차순
sort(v.begin(), v.end(), greater<>()); // 내림차순

☑️ 정렬 범위는 벡터의 begin, end 함수를 사용
☑️ 정렬 조건 greater, less를 이용
☑️ less는 생략 가능


💡 Pair이란?

📌 Pair의 정의

2개의 객체(first, second)를 하나로 묶어 데이터의 쌍을 표현할 때 사용
주로 벡터와 묶어 2차원 배열처럼 사용하거나, 좌표계를 표현할 때 사용

📌 Pair의 멤버 함수

1. v.first : v의 첫 번째 인자 반환
2. v.second : v의 두 번째 인자 반환
3. make_pair(value1, value2) : value1, value2를 가진 pair 생성


💡 Pair과 vector를 사용한 예제

#include<iostream>
#include<vector>
#include<utility>
using namespace std;

int main() {
vector<pair<int, int>> v;

v.push_back(make_pair(10,20));
v.push_back(make_pair(30,40));
v.push_back(make_pair(50,60));

cout << v[0].first << " " << v[0].second << endl;
cout << v[1].first << " " << v[1].second << endl;
cout << v[2].first << " " << v[2].second << endl;
return 0;
}

📌출력 결과

📌 [참고사이트]
https://cocoon1787.tistory.com/201
https://novlog.tistory.com/13

'C++' 카테고리의 다른 글

[C/C++] 2차원 vector 초기화  (0) 2023.03.01
[C/C++] C6262 함수가 스택의 바이트를 사용합니다.  (0) 2023.02.24
런타임 에러 해결  (0) 2023.02.24
[C++] this 포인터  (0) 2023.02.24

💡 스택의 두 가지 기본 연산

  • 삽입 연산 : push
  • 삭제 연산 : pull

◼️ 이외 연산들

  • create(size) : 최대 크기가 size인 공백 스택을 생성한다.
  • is_full(s) : 스택이 포화상태에 있는지를 검사한다.
  • is_empty(s) : 스택이 공백상태에 있는지 검사한다.
  • push(s, item) : 스택의 맨 위에 item을 추가한다.
  • pop(s) : 스택의 맨 위의 원소를 제거해서 반환한다.
  • peek(s) : 스택의 맨 위의 원소를 제거하지 않고 반환한다.

💡 스택을 구현하는 방법

1. 배열을 이용하는 방법

  • 장점 : 방법 간단, 성능 우수
  • 단점 : 스택의 크기가 고정됨

2. 연결 리스트를 이용하는 방법

  • 장점 : 스택의 크기를 필요에 따라 가변적으로 가능
  • 단점 : 구현이 약간 복잡

💡 스택의 구현 (1차원 배열을 이용)

📌 top 변수는 스택이 비어 있으면 -1을 갖는다. 

  • 0의 값을 가지면 안 된다.
  • top의 값이 0이면 배열의 인덱스 0에 데이터가 있다는 것을 의미하기 때문이다.
 

'자료구조' 카테고리의 다른 글

[자료구조] map  (0) 2023.02.26
[자료구조] 스택이란?  (0) 2023.02.24

⭐️ 문제

⭐️ 코드

#include<bits/stdc++.h>
using namespace std;

int gcd(int a, int b) {
	int maxdiv = 0;
	int range = min(a, b);

	for (int i{ 1 }; i <= range; i++) {
		if (a % i == 0 && b % i == 0) {
			maxdiv = i;
		}
	}
	return maxdiv;
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int num1, num2 = 0;
	cin >> num1 >> num2;

	cout << gcd(num1, num2) << "\n";
	cout << (num1 / gcd(num1, num2)) * (num2 / gcd(num1, num2)) * gcd(num1, num2);

	return 0;
}

🔻 다른 풀이 #1

#include <iostream>
using namespace std;

// 최대공약수 구하기
int gcd(int a, int b) {
	int c = a % b;
	while (c != 0) {
		a = b;
		b = c;
		c = a % b;
	}
	return b;
}

// 최소공배수 구하기
int lcm(int a, int b) {
	return (a * b) / gcd(a, b);
}

int main() {
	int n1, n2;
	cin >> n1 >> n2;
	cout << gcd(n1, n2) << "\n" << lcm(n1, n2);
}

✔️ 최소공배수 구하는 함수 코드

int lcm(int a, int b) {
	return (a * b) / gcd(a, b);
}

최대공약수*최소공배수 = 두 수의 곱

출처 : https://sectumsempra.tistory.com/77

 

[백준2609]-최대공약수와 최소공배수(C++)/유클리드 호제법

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 유

sectumsempra.tistory.com

💡 스택(stack)이란?

🔻 스택 : "쌓다"라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조

  • 데이터가 순서대로 쌓이며 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조
  • 스택은 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근 가능

ex) 식당에 쌓여 있는 접시들 -> 접시가 필요하면 제일 위에 있는 접시부터 사용, 가장 아래 있는 접시는 마지막에 사용


🔻 스택은 LIFO / FILO 순서를 따름

  • LIFO : 마지막으로 들어온 값이 처음으로 나가는 것
  • FILO : 처음 들어온 값이 마지막에 나가는 것
  • -> 후입 선출
  • Overflow 상태 : 스택이 완전히 꽉 찾을 때
  • Underflow 상태 : 스택이 완전히 비어 있을 때
  • push : 데이터를 스택에 넣는 작업(삽입 연산)
  • pop : 데이터를 스택에서 제거하는 작업(삭제 연산)

💡 연산

🔻 push()

1. 스택이 가득 차 있는지 확인
2. 스택이 가득 차 있으면, 오류가 발생하고 종료됨
3. 스택이 가득 차 있지 않으면, Top 증가시킴
4. Top이 가리키는 스택 위치에 데이터 추가

🔻 pop()

1. 스택이 비어 있는지 확인
2. 스택이 비어 있으면, 오류가 발생하고 종료됨
3. 스택이 비어 있지 않으면, Top이 가리키는 데이터를 제거
4. Top 값을 감소시킴
5. 성공 반환

🔻 peek()

  • 현재 top이 가리키고 있는 데이터를 확인하는 연산
  • pop()과의 차이점 : pop 연산은 stack에서 꺼내서 읽는다면, peek 연산데이터를 꺼내지 않고 값만 읽음

🔻 isEmpty()

  • 현재 stack이 비어있는지 확인하는 연산
  • stack이 비어있다면 true, 비어있지 않다면 false 반환

'자료구조' 카테고리의 다른 글

[자료구조] map  (0) 2023.02.26
[자료구조] 스택 연산/구현  (0) 2023.02.24

📌 문제

풀이


(출처 : 나무위키)

📌 코드

include<bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N = 1;
	int K = 1;

	cin >> N >> K;
	
	int denom = 1; // 분모
	int numer = 1; // 분자
	
	for (int i{ N }; i >= 1; i--) {
		denom *= i;
	}
	
	for (int i{ K }; i >= 1; i--) {
		numer *= i;
	}

	for (int i{ N - K }; i >= 1; i--) {
		numer *= i;
	}

	cout << denom / numer;
}

📌 다른 풀이

#include<iostream>
using namespace std;

int Factorial(int num) {
	if (num == 0)
		return 1;
	int result = 1;

	for (int i = num; i >= 1; i--) {
		result *= i;
	}

	return result;
}

int main() {
	int n, k;

	cin >> n >> k;

	cout << Factorial(n) / (Factorial(k) * Factorial(n - k));

	return 0;
}

이외에 재귀함수를 사용하여 푸는 방법도 있다.

출처 : https://blockdmask.tistory.com/93

 

[백준 11050] 이항계수 1 (반복, 재귀)

안녕하세요. BlockDMask 입니다.비가 추적추적 내리는 월요일이네요. 오늘의 문제를 포스팅 해보겠습니다.0. 제목BOJ 11050 이항계수 1백준 11050 이항계수 1 C++ 이용해서 풀었습니다.1. 문제 설명 자연

blockdmask.tistory.com

+ Recent posts