일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다이나믹 프로그래밍
- 2024년
- 수학
- 5월
- 10월
- 2023년
- 개인 프로젝트 - 런앤건
- 단계별로 풀어보기
- 자료 구조
- 2022년
- 2025년
- 코딩 기초 트레이닝
- 입문
- 백준
- 2월
- 1월
- todolist
- 3월
- 7월
- 기초
- 유니티 심화과정
- c++
- 4월
- 프로그래머스
- C/C++
- 게임 엔진 공부
- 골드메탈
- 코딩 테스트
- 유니티
- 개인 프로젝트
- Today
- Total
기록 보관소
[프로그래머스] 코딩 기초 트레이닝 PART 25(C++)(完) 본문
프로그래머스 코딩 테스트 연습 : 코딩 기초 트레이닝(C++)
https://school.programmers.co.kr/learn/challenges?order=recent&languages=cpp&partIds=44139&page=7
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
프로그래머스 코딩 기초 트레이닝 : 정수를 나선형으로 배치하기
https://school.programmers.co.kr/learn/courses/30/lessons/181832
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
양의 정수 n이 매개변수로 주어집니다.
n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ n ≤ 30
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(int n) {
vector<vector<int>> answer(n, vector<int>(n, 1));
int r1 = 0, r2 = n - 1, c1 = 0, c2 = n - 1;
for (int i = 0; i < n * n;) {
for (int j = c1; j <= c2; j++)
answer[r1][j] += i++;
r1++;
for (int j = r1; j <= r2; j++)
answer[j][c2] += i++;
c2--;
for (int j = c2; j >= c1; j--)
answer[r2][j] += i++;
r2--;
for (int j = r2; j >= r1; j--)
answer[j][c1] += i++;
c1++;
}
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 특별한 이차원 배열 2
https://school.programmers.co.kr/learn/courses/30/lessons/181831
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
- 0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
제한사항
- 1 ≤ arr의 길이 = arr의 원소의 길이 ≤ 100
- 1 ≤ arr의 원소의 원소 ≤ 1,000
- 모든 arr의 원소의 길이는 같습니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> arr) {
for (int i = 0; i < arr.size(); i++)
for (int j = 0; j < arr.size(); j++)
if (arr[i][j] != arr[j][i])
return 0;
return 1;
}
// 다른 사람의 풀이 : 두번째 반복문 횟수를 줄이는 방법
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<vector<int>> arr)
{
int answer=0;
for(int i=1; i<arr.size(); i++)
for(int j=0; j<i; j++)
if(arr[i][j]!=arr[j][i])
return 0;
return 1;
}
결과
프로그래머스 코딩 기초 트레이닝 : 정사각형으로 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/181830
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
이차원 정수 배열 arr이 매개변수로 주어집니다.
arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소의 길이 ≤ 100
- arr의 모든 원소의 길이는 같습니다.
- 1 ≤ arr의 원소의 원소 ≤ 1,000
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr) {
if (arr.size() > arr[0].size()) {
for (int i = 0; i < arr.size(); i++)
for (int j = arr[i].size(); j < arr.size(); j++)
arr[i].push_back(0);
}
else if (arr.size() < arr[0].size())
for (int i = arr.size(); i < arr[0].size(); i++) {
vector<int> temp(arr[0].size(), 0);
arr.push_back(temp);
}
return arr;
}
// 다른 사람의 풀이 : max 함수와 이중 벡터를 생성해서 해결하는 방법
#include <cmath>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr)
{
vector<vector<int>> answer;
int size=max(arr.size(), arr[0].size());
vector<vector<int>> temp(size, vector<int>(size, 0));
for(int i=0; i<arr.size(); i++)
for(int j=0; j<arr[i].size(); j++)
temp[i][j]=arr[i][j];
answer=temp;
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 이차원 배열 대각선 순회하기
https://school.programmers.co.kr/learn/courses/30/lessons/181829
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
2차원 정수 배열 board와 정수 k가 주어집니다.
i + j <= k를 만족하는 모든 (i, j)에 대한 board[i][j]의 합을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ board의 길이 ≤ 100
- 1 ≤ board[i]의 길이 ≤ 100
- 1 ≤ board[i][j] ≤ 10,000
- 모든 board[i]의 길이는 같습니다.
- 0 ≤ k < board의 길이 + board[i]의 길이
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, int k) {
int answer = 0;
for (int i = 0; i < board.size(); i++)
for (int j = 0; j < board[0].size(); j++)
if (i + j <= k)
answer += board[i][j];
return answer;
}
결과
여담
이렇게 코딩 기초 트레이닝의 모든 문제 풀이를 끝냈다.
마지막이라 그런지는 몰라도 첫 문제 '정수를 나선형으로 배치하기'는 이전 문제들과는 달리 조금 고민이 많이 필요한 문제였다. 그래도 천천히 하나 하나 써보면서 패턴을 찾아보고 정리해서 해결했다.
1레벨로 바로 넘어갈까 했지만, 0레벨에 PCCE 문제가 8개 있어서 이 문제를 모두 풀고나서 1레벨 문제 풀이를 할 계획이다.
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] PCCE 기출 문제 5 ~ 8번(C++) (4) | 2024.03.22 |
---|---|
[프로그래머스] PCCE 기출 문제 1 ~ 4번(C++) (2) | 2024.03.21 |
[프로그래머스] 코딩 기초 트레이닝 PART 24(C++) (5) | 2024.03.18 |
[프로그래머스] 코딩 기초 트레이닝 PART 23(C++) (0) | 2024.03.15 |
[프로그래머스] 코딩 기초 트레이닝 PART 22(C++) (0) | 2024.03.14 |