ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] μ§μ‚¬κ°ν˜• μ’Œν‘œ κ΅¬ν•˜κΈ°
    μ½”λ”©ν…ŒμŠ€νŠΈ/μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ 2019. 5. 6. 20:46
    728x90

    문제 μ„€λͺ…

    μ§μ‚¬κ°ν˜•μ„ λ§Œλ“œλŠ” 데 ν•„μš”ν•œ 4개의 점 쀑 3개의 μ’Œν‘œκ°€ μ£Όμ–΄μ§ˆ λ•Œ, λ‚˜λ¨Έμ§€ ν•œ 점의 μ’Œν‘œλ₯Ό κ΅¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 점 3개의 μ’Œν‘œκ°€ λ“€μ–΄μžˆλŠ” λ°°μ—΄ vκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, μ§μ‚¬κ°ν˜•μ„ λ§Œλ“œλŠ” 데 ν•„μš”ν•œ λ‚˜λ¨Έμ§€ ν•œ 점의 μ’Œν‘œλ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”. 단, μ§μ‚¬κ°ν˜•μ˜ 각 변은 xμΆ•, y좕에 ν‰ν–‰ν•˜λ©°, λ°˜λ“œμ‹œ μ§μ‚¬κ°ν˜•μ„ λ§Œλ“€ 수 μžˆλŠ” 경우만 μž…λ ₯으둜 μ£Όμ–΄μ§‘λ‹ˆλ‹€.

    μ œν•œμ‚¬ν•­

    • vλŠ” μ„Έ 점의 μ’Œν‘œκ°€ λ“€μ–΄μžˆλŠ” 2차원 λ°°μ—΄μž…λ‹ˆλ‹€.
    • v의 각 μ›μ†ŒλŠ” 점의 μ’Œν‘œλ₯Ό λ‚˜νƒ€λ‚΄λ©°, μ’Œν‘œλŠ” [xμΆ• μ’Œν‘œ, yμΆ• μ’Œν‘œ] 순으둜 μ£Όμ–΄μ§‘λ‹ˆλ‹€.
    • μ’Œν‘œκ°’μ€ 1 이상 10μ–΅ μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
    • μ§μ‚¬κ°ν˜•μ„ λ§Œλ“œλŠ” 데 ν•„μš”ν•œ λ‚˜λ¨Έμ§€ ν•œ 점의 μ’Œν‘œλ₯Ό [xμΆ• μ’Œν‘œ, yμΆ• μ’Œν‘œ] 순으둜 λ‹΄μ•„ return ν•΄μ£Όμ„Έμš”.

    μž…μΆœλ ₯ 예

    v result
    [[1, 4], [3, 4], [3, 10]] [1, 10]
    [[1, 1], [2, 2], [1, 2]] [2, 1]

    μž…μΆœλ ₯ 예 #1
    μ„Έ 점이 [1, 4], [3, 4], [3, 10] μœ„μΉ˜μ— μžˆμ„ λ•Œ, [1, 10]에 점이 μœ„μΉ˜ν•˜λ©΄ μ§μ‚¬κ°ν˜•μ΄ λ©λ‹ˆλ‹€.

    μž…μΆœλ ₯ 예 #2
    μ„Έ 점이 [1, 1], [2, 2], [1, 2] μœ„μΉ˜μ— μžˆμ„ λ•Œ, [2, 1]에 점이 μœ„μΉ˜ν•˜λ©΄ μ§μ‚¬κ°ν˜•μ΄ λ©λ‹ˆλ‹€.

    #include <iostream>
    #include <vector>
    using namespace std;
    
    vector<int> solution(vector<vector<int> > v) {
    	vector<int> ans;
    	int x, y;
    
    	ans.assign(2, 0);
    
    	if (v[0][0] == v[1][0])
    		x = v[2][0];
    	else if (v[0][0] == v[2][0])
    		x = v[1][0];
    	else if (v[1][0] == v[2][0])
    		x = v[0][0];
    
    	if (v[0][1] == v[1][1])
    		y = v[2][1];
    	else if (v[0][1] == v[2][1])
    		y = v[1][1];
    	else if (v[1][1] == v[2][1])
    		y = v[0][1];
    
    	ans[0] = x;
    	ans[1] = y;
    
    	return ans;
    }

    - 쒀더 정리 해보면

    #include <iostream>
    #include <vector>
    using namespace std;
    
    vector<int> solution(vector<vector<int> > v) {
    	vector<int> ans(2,0);
    	int *coordinate = new int[2];
    
    	for (int i = 0; i < 2; i++){
    		if (v[0][i] == v[1][i])
    			coordinate[i] = v[2][i];
    		else if (v[0][i] == v[2][i])
    			coordinate[i] = v[1][i];
    		else if (v[1][i] == v[2][i])
    			coordinate[i] = v[0][i];
    	}
    
    	for(int j=0; j< 2; j++)
    		ans[j] = coordinate[j];
    
    	return ans;
    }
    void main()
    {
    	vector<vector<int> > problem(3, vector<int>(2,0)); // >>λ₯Ό λΆ™μ—¬μ“°λ©΄ μ‰¬ν”„νŠΈ μ—°μ‚°μžλ‘œ 인식할 수 있음
    	vector<int> ans;
    
    	problem[0][0] = 1;
    	problem[0][1] = 4;
    	problem[1][0] = 3;
    	problem[1][1] = 4;
    	problem[2][0] = 3;
    	problem[2][1] = 10;
    
    	ans = solution(problem);
    
    	cout << "[" << ans[0] << ", " << ans[1] << "]" << endl;
    	
    }

    - μ‰¬μš΄ λ¬Έμ œμ§€λ§Œ 벑터가 주어진 만큼 이λ₯Ό μ‚¬μš©ν•΄μ„œ 더 효율적으둜 μ½”λ“œλ₯Ό μ§œλŠ” 방법이 μžˆμ§€ μ•Šμ„κΉŒ?

    - vector container에 λŒ€ν•΄ 정리할 ν•„μš”μ„±μ„ λŠκΌˆλ‹€.

     

    μ§€κΈˆμ΄λΌλ©΄ μ΄λ ‡κ²Œ ν’€κ±° 같은데 XOR 방식보닀 더 μ’‹μ•„λ³΄μ΄μ§€λŠ” μ•ŠλŠ”λ‹€(20210909)

    #include <iostream>
    #include <vector>
    #include <map>
    
    using namespace std;
    
    vector<int> solution(vector<vector<int> > v) {
        vector<int> ans;
        map<int, int> coord_x;
        map<int, int> coord_y;
        for (auto coord : v) {
            coord_x[coord[0]] == 0 ? coord_x[coord[0]]++ : coord_x[coord[0]]--;
            coord_y[coord[1]] == 0 ? coord_y[coord[1]]++ : coord_y[coord[1]]--;
        }
        
        for (auto x : coord_x) {
            if(x.second != 0) {
                ans.push_back(x.first);
            }
        }
        
        for (auto y : coord_y) {
            if(y.second != 0) {
                ans.push_back(y.first);
            }
        }
        
        return ans;
    }

     

    728x90

    λŒ“κΈ€

Designed by Tistory.