C++ 프로그래밍
함수/전역변수/지역변수의 주소값
#include<iostream> using namespace std; int g = 0; void func() { cout << "func() : " << &func << endl; } int main() { int n = 10; static int c; const int d = 10; char ary[10] = "hi"; func(); cout << "local : " << &n << endl; cout << "global : " << &g << endl; // 함수와 전역변수의 주소값이 유사한것을 볼 수 있고, 지역변수의 주소값은 많이 떨어져있음을 인지 cout << "static : " << &c << endl; cout << "const : " << &d << endl; cout << "array : " << &ary << endl; return 0; }
함수와 전역변수 주서값이 유사하고 지역변수 주소값은 많이 떨어져있다.
값/주소에 의한 참조
#include<iostream> using namespace std; void swap(int &n1, int &n2) { int temp = n1; n1 = n2; n2 = temp; cout << "호출 후 n1:" << n1 << " n2:" << n2; } int main() { int n1 = 10, n2 = 20; cout << "호출 전 n1:" << n1 << " n2:" << n2 << endl; swap(n1, n2); return 0; }
위가 주소에 의한 참조이고 swap의 인자를
void swap(int n1, int n2) 로 선언 시 값에 의한 참조임.
프로그래머스
최빈값 구하기
def solution(array): from collections import Counter cnt=Counter(array).most_common() #최빈값 찾아서 배열로 넣어줌 if len(cnt)>1: if cnt[0][1]==cnt[1][1]: return -1 else: return cnt[0][0] return cnt[0][0] solution([1,1,2,2,2,3,3,3,3])
1) from collections import Counter --> Counter 모듈 import
2) cnt=Counter(array).most_common() --> array=[1,2,2,3,3,3] 일 때 cnt는 배열의 형태로
[(3,3),(2,2),(1,1)]를 받아옴/ array라는 배열에서 3이 3번, 2가 2번, 1이 1번 나왔다는 뜻
3) len(cnt)=3이고, len(cnt)>1 일때 cnt[0][1] == cnt[1][1] 최빈값을 자동으로 내림차순으로 정렬했는데 첫번째와 두번째의 빈도가 같다면 최빈값이 2개 이상 이라는 뜻이기에 -1 출력
4) 그 외는 cnt[0][0] 즉 최빈값을 가지는 수를 출력시키면 최빈값 출력
5) if 문 종료후에도 return cnt[0][0] 을 통해 [1] 이 입력일 때 최빈값이 1이기에 그대로 출력--> collections 의 Conuter 모듈을 잘 기억하고 사용하면 문제풀이에 매우 효과적일듯