Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- coding test
- datastructure
- 메모리구조
- C 언어 코딩 도장
- Serialization
- list 컬렉션
- 알기쉬운 알고리즘
- JSON
- C programming
- R
- insertion sort
- buffer
- Algorithm
- Stack
- Graph
- stream
- 혼자 공부하는 C언어
- 이스케이프 문자
- 윤성우의 열혈 자료구조
- s
- Selection Sorting
- 윤성우 열혈자료구조
- 이것이 자바다
Archives
- Today
- Total
Engineering Note
나머지 한점 본문
it 취업을위한알고리즘문제풀이
문제
programmers.co.kr/learn/courses/18/lessons/1878?language=c
[
알고리즘 문제 해설 - 나머지 한 점
프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어
programmers.co.kr
](https://programmers.co.kr/learn/courses/18/lessons/1878?language=c)
코드
travelerfootprint.tistory.com/54
백준 알고리즘 3009번: 네 번째 점 C언어
문제 출처: https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌
travelerfootprint.tistory.com
//https://programmers.co.kr/learn/courses/18/lessons/1878?language=c
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// v_row_len은 2차원 배열 v의 행(세로) 길이입니다.
// v_col_len은 2차원 배열 v의 열(가로) 길이입니다.
// v[i][j]는 v의 i번째 행의 j번째 열에 저장된 값을 의미합니다.
int* solution(int **v, size_t v_row_len, size_t v_col_len) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)calloc(2,sizeof(4));
for(int i =0;i<3;++i){
answer[0] ^= v[i][0];
answer[1] ^= v[i][1];
}
return answer;
}
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// v_row_len은 2차원 배열 v의 행(세로) 길이입니다.
// v_col_len은 2차원 배열 v의 열(가로) 길이입니다.
// v[i][j]는 v의 i번째 행의 j번째 열에 저장된 값을 의미합니다.
int* solution(int **v, size_t v_row_len, size_t v_col_len) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)calloc(2,sizeof(4));
if(v[0][0] == v[1][0])
answer[0] = v[2][0];
else if(v[0][0] == v[2][0])
answer[0] = v[1][0];
else answer[0] = v[0][0]; /*y값 서로 비교하여 겹치지 않은 y값을 y[3]에 대입*/
if(v[1][0] == v[1][1])
answer[1] = v[1][2];
else if(v[1][0] == v[1][2])
answer[1] = v[1][1];
else answer[1] = v[1][0];
return answer;
}
입력 v형태
X1 |
Y1 |
X2 |
Y2 |
X3 |
Y3 |
문제해결방법
- XOR를 이용해서 문제를 해결했다.
- ((x1 xor x1) xor x2) = x2 // 앞에 괄호에 x1 과 x1 같은 값끼리 xor를 하면 0이나오고 0과 x2의 xor를 하면 x2가 나오는 원리를 이용했다.
- 출력할 answer 동적 배열을 calloc으로 0으로 초기화 한 상태로 동적 할당한다.
- x좌표를 answer[0]에 저장하고 y좌표를 answer[1]에 저장 하여 return 한다.
- v[0][0]에는 x1, v[0][1]에는 y1, v[1][0]에는 x1, v[1][1]에는 y2, v[2][0]에는 x3, v[2][1]에는 y3가 저장되어 입력 형태로 들어오므로 0과
'Problem Solving' 카테고리의 다른 글
네이버부스트캠프 (0) | 2021.06.27 |
---|---|
알고리즘 문제 풀이 사고 과정 (0) | 2021.05.14 |
Comments