본문 바로가기
반응형

삼성 C형60

Visual Studio LNK1168: 쓰기용으로 열 수 없습니다 해결방법 (실행 파일 이름 변경하기) A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 참고- 삼성 A형 전체 링크- 삼성 B형 전체 링크- 삼성 C형 전체 링크- 알고리즘 테스트 용 Visual Studio Setting - Input- 알고리즘 테스트 용 Visual Studio Setting - Output 알고리즘 문제를 풀다 보면 메모리를 잘못 접근하거나 무한루프에 빠지는 경우, : 오류 LNK1168 C:\Users\source\repos\Project3\Debug\Solution.exe을(를) 쓰기용으로 열 수 없습니다. 와 같은 에러가 발생할 수 있다. 대부분 exe를 종료하면 해결되지만, 가끔 백그라운드로 남아서 다시 실행되지 않을 때가 있다.심한 경우는 비주얼 스튜디오를 끄고 켜더라도 동작하지 않아 컴퓨터.. 2022. 12. 16.
셔플 Shuffle - 카드 섞기 알고리즘 C, C++ 전체 링크 삼성 C형 전체 링크 1~10까지 카드가 있다고 가정하자. 이때, 카드를 N번(20) 적당히 섞어보자. stdlib.h를 선언하면 rand()함수를 이용할 수 있다. 카드가 총 10장이므로 카드의 size = 10으로 rand() % size를 하면 10장 중 1개의 카드를 랜덤으로 고를 수 있다. 카드를 2장 랜덤으로 골라 교환하면 카드가 섞인다. #include #include /* rand() 사용을 위한 선언 */ int main(void) { int N = 20; int card[] = { 1,2,3,4,5,6,7,8,9,10 }; int size = sizeof(card) / sizeof(int); for (int i = 0; i < N; i++) /* N번 교환 */ .. 2022. 7. 8.
인라인(inline) 함수 - 삼성 SW 역량 시험 환경 삼성 B형 전체 링크 결론부터 이야기하면, 삼성 SW 역량에서 inline 함수는 쓸모없다. Visual Studio에서 inline 함수와 inline이 아닌 함수, 그리고 MACRO 함수의 속도를 비교해보자. 그리고 삼성 SW 역량 테스트 환경에서 비교해보겠다. 먼저 Visual Studio에서 inline 함수를 사용하려면 최적화 설정을 변경해야 한다. 솔루션 탐색기에서 마우스 오른쪽 버튼을 클릭한 후 속성으로 들어가보자. 구성 속성에서 C/C++ → 최적화를 클릭한 후 인라인 함수 확장에서 __inline만 확장을 선택한다. 이렇게 설정하지 않으면 inline 키워드를 추가해도 인라인 되지 않는다. Visual Studio에서 실행 시간을 확인하는 방법은 링크를 참고하자. 아래의 코드는 두 변수 .. 2021. 5. 19.
최적화) 삼성 C형 샘플 문제 : 블록 부품 맞추기 SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 삼성 B형 전체 링크삼성 C형 전체 링크 블록 부품 맞추기 문제를 더 최적화 해보자. 아래의 makeBlock에서 코드를 하나씩 지워보며 시간을 재보면 sort에서 비용이 많이 드는 것을 알 수 있다.int makeBlock(int module[][4][4]){ register int i, sum; bcnt1 = bcnt2 = mcnt1 = mcnt2 = 0; for (i = 0; i  따라서, 정렬 후 이분 탐색으로 hashing된 블럭을 찾지말고, hash table에 블럭을 저장하도록 하자.블럭의 hashing된 값의 최대 크기는 0x2222222222222222이므로 그래도 저장하기에는 너무 큰 값이다.따라서 PRIME으로 나눈 나머.. 2021. 4. 3.
삼성 C형 샘플 문제 : 블록 부품 맞추기 A형 필수 알고리즘을 체계적으로 배우고 싶다면? (인프런 바로가기) 삼성 B형 전체 링크삼성 C형 전체 링크 참고- 삼성 C형 샘플 문제 : 블록 부품 맞추기 최적화 swexpertacademy.com/main/sst/intro.do SW Expert Academy에서 C형 샘플 문제 블록 부품 맞추기를 풀어보자.  블록 부품 맞추기는 C형 샘플 문제지만 B형 유형으로 풀 수 있다.여기서 필요한 개념은 2차원 배열의 해싱과 정렬(merge sort), 그리고 이분 탐색이다. 보통 어떤 데이터를 빠르게 찾고 싶은 경우, 정렬을 한 후에 이분 탐색을 하는 경우가 많다.문제의 예시를 보자.오른쪽의 블럭을 뒤집어서 맞춰 끼우면 모두 높이가 8인 완벽한 육면체가 된다. 총 30,000개의 블럭 중에 완성품의 합이.. 2021. 3. 30.
포인터의 크기 (Size of Pointer) - 삼성 SW 역량 시험 환경 삼성 C형 전체 링크 보통 visual studio 환경에서 포인터의 크기는 4byte다. 아래의 코드를 확인해보자. #include int main() { putchar('\n'); printf("char : %d\n", sizeof(char)); printf("short : %d\n", sizeof(short)); printf("int : %d\n", sizeof(int)); printf("long int : %d\n", sizeof(long long int)); putchar('\n'); printf("char* : %d\n", sizeof(char*)); printf("short* : %d\n", sizeof(short*)); printf("int* : %d\n", sizeof(int*)); pr.. 2021. 3. 20.
유일한 수 두개 알고리즘 문제 전체 링크 judge.koreatech.ac.kr/problem.php?id=1074 유일한 수 문제의 응용 버전이다. 모든 수가 짝이 있으나 단 2개의 수만 짝이 없다. 유일한 수 문제대로 풀면 짝이 있는 수는 자연스럽게 제거할 수 있지만, 짝이 맞지 않는 두 수가 xor 연산되어 있어서 답을 구할 수 없게 될 것 같다. 하지만 여전히 xor 연산을 이용해서 문제를 해결할 수 있다. 먼저 두 수가 다르다는 것은, 최소 1 bit가 다르다는 뜻이 된다. 즉, 모든 N을 xor한 후, 어떤 다른 1 bit를 기준으로 1 bit가 있는 경우는 on에 xor을 1 bit가 없는 경우는 off에 xor을 하면 두 수가 분리된다. 예를 들어서 두 수가 3과 7이라고 하자. 0011(3)과 0111(.. 2021. 3. 1.
C, C++ - 최하위 / 최상위 비트 구하기 (Find MSB, LSB) C, C++ 전체 링크 삼성 C형 전체 링크 참고 - 비트 단위로 출력하기 다음과 같은 비트가 있다고 가정하자. 0010 0000 1100 0010 그러면 최하위 비트(Least Significant Bit)와 최상위 비트(Most Significant Bit)는 아래와 같다. 0010 0000 1100 0010 0000 0000 0000 0010 → 2 : 최하위 비트 (LSB : Least Significant Bit) 0010 0000 0000 0000 → 8192 : 최상위 비트 (MSB : Most Significant Bit) 최하위 비트 구하기 최하위 비트 추출법은 매우 간단하다. int lsb = x & (-x); // int lsb = x & (~x + 1) 2의 보수를 구하는 방법이기도.. 2021. 3. 1.
유일한 수 알고리즘 문제 전체 링크 judge.koreatech.ac.kr/problem.php?id=1007 문제의 조건을 보면 홀수개의 숫자가 입력이 되고, 그 중 단 하나만 다르다. 따라서 bit 연산 ^(xor)을 누적하면 단 하나의 숫자만 남게 된다. 어떤 숫자 N에 숫자 M bit를 반전시키고, 다시 M bit를 반전 시키면 N이 되기 때문이다. ( N = N ^ M ^ M ) 따라서 0부터 시작해서 누적하면 짝이 있는 숫자들은 자연스레 사라지게 된다. #include int T, N; int main(void) { scanf("%d", &T); for (int tc = 0; tc < T; tc++) { int ans; scanf("%d", &N); ans = 0; for (int i = 0; i < N.. 2021. 3. 1.
반응형