목록전체 글 (169)
하다보니
#include using namespace std; int num[10]; int main() { ios::sync_with_stdio(0); cin.tie(0); string s; cin >> s; for (auto c : s) { num[c - '0']++; } int sum = num[6] + num[9]; num[6] = sum / 2 + sum % 2; num[9] = 0; int max = num[0]; for (int i = 1; i < 9; i++) { if (max < num[i]) { max = num[i]; } } cout
문자열(string)을 숫자(int)로 형변환하기 위해서 stoi 함수를 사용할 수 있다. stoi는 string to integer이 축약된 단어이며 double형으로 변환하고 싶다면 stod를, long long타입으로 변환하고 싶다면 stoll을 사용하면 된다. 해당 숫자 타입의 범위를 벗어나지 않는지 주의하여야 한다. 숫자를 문자열로 변환하고자 할 경우에는 to_string 함수를 사용하면 된다. 위 함수들 모두 string 헤더에 포함되어 있다. 문자->숫자 : 문자-'0' 숫자->문자 : 숫자+'0'
Operator 문자열 합치기 + numeric operators increment and decrement operators assignment operators Logical operators : || && ! -> or는 true가 나오면 멈춘다. or중에 하나라도 true면 true이기 때문이다. 따라서 연산이 많은 함수를 제일 앞에 두게 되면 안된다. 가벼운 것들을 앞에 두는 연습. and는 false가 나오면 멈춘다. 따라서 연산이 많은 함수를 뒤에서 확인하는 게 좋다. and는 null 체크에도 많이 쓴다. == : loose equality. '5'와 5를 동일하다고 출력한다. === : strict equality. 타입까지 똑같아야한다. '5'와 5는 다른 것. 따라서 코딩시 이것으로 ..
큐는 한쪽 끝에서 원소를 넣고 반대쪽 끝에서 원소를 뺄 수 있는 자료구조이다. FIFO(First in First out) 구조이다. 큐의 성질 원소의 추가가 O(1) 원소의 제거가 O(1) 제일 앞/뒤의 원소 확인이 O(1) 제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능 스택에서는 보통 원소가 추가되고 제거되는 곳을 top이라고 부르고, 원소가 위 아래로 배치된 것으로 생각함. 큐에서는 추가되는 곳을 rear, 즉 뒤 쪽이라고 하고 제거되는 쪽을 front, 즉 앞 쪽이라고 한다. 자료구조에서는 인덱스를 가지고 원소에 접근하는 기능이 없지만 배열을 가지고 만들 땐 해당 기능이 가능하도록 구현할 수 있다. 하지만 STL queue에는 인덱스로 내부 원소를 접근하는 기능이 없다. 큐를 ..
#include using namespace std; int num[10]; int main() { ios::sync_with_stdio(0); cin.tie(0); int a; int total=1; for (int i = 0; i > a; total *= a; } string l = to_string(total); for (auto c : l) { num[c - '0']++; } for (int i = 0; i < 10; i++)cout
#include using namespace std; int freq[26]; int main() { ios::sync_with_stdio(0); cin.tie(0); string s; cin >> s; for (auto c : s) { freq[c - 'a']++; } for (int i = 0; i < 26; i++)cout
auto 키워드는 선언된 변수의 초기화 식을 사용하여 해당 형식을 추론하도록 컴파일러에 지시한다. 즉, auto 키워드를 사용하면 초기값 형식에 맞춰 선언하는 인스턴스(변수)의 형식이 자동으로 결정된다. 이것을 타입 추론(type inference)라고 한다. auto d=5.0; //5.0은 double type이므로 d는 double로 결정 auto i=1+2; //1+2는 int type이므로 i는 int 타입 변수를 함수의 반환 값으로 초기화 할 때도 사용 가능하다. int add(int x, int y) { return x + y; } int main() { auto sum = add(5, 6); // add() returns an int, so sum will be type int return..
#include using namespace std; int arr[21]; void reverse(int a, int b) { for (int i = 0; i > a >> b; reverse(a, b); } for (int i = 1; i < 21; i++) cout
id는 한 페이지에 하나의 정의로 하나의 태그에만 사용할 수 있다. class는 한 페이지에 반복적으로 사용되는 스타일을 정의할 수 있다. 이 사실을 깜빡하고 그림판을 만들던 중 펜의 색을 변경하는 부분 코드를 작성하던 중 펜 색깔이 바뀌지 않아 무슨 문제인가 하고 봤더니 html에서 각 팔레트의 식별자를 모두 같은 id로 해둔것이다...그래놓고 js에서 그것을 한번에 선택해서 event로 바꾸려고 하다니ㄷㄷ
입력 연산 출력이 프로그램의 핵심! cpu에 최적화된 로직을 구현하고, 메모리의 사용을 최소화 하는 것도 중요하다. let ES6에 추가된 개념이다. 자바스크립트에서 변수를 선언할 수 있는 유일한 방법. var는 선언 전에 값을 할당할 수 있다. 심지어 값 할당 전에 출력도 할 수 있다. 에러가 발생하지 않는다는 것이다. 이것을 var hoisting이라고 한다. 또한 var는 block scope이 없다. 즉, block을 철저히 무시한다. 블록 안에 있어도 외부에서 접근이 가능하다. constant 변수를 이용하면 변수가 메모리 어딘가에 할당된 박스를 가리키고 있어서 포인터를 이용해서 값을 계속 바꿀 수 있었다. constants는 이 포인터가 잠겨있다. 그래서 값을 선언함과 동시에 할당한 뒤로는 절..