23.03.22 Day37

오윤범·2023년 3월 22일
0
post-custom-banner

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 모듈을 잘 기억하고 사용하면 문제풀이에 매우 효과적일듯

post-custom-banner

0개의 댓글