Free Lines Arrow
본문 바로가기
728x90

Algorithm77

[프로그래머스] 오픈채팅방 문제 분석 문제가 길다. 천천히 읽어 나갈 필요가 있다. 읽어보니 채팅방의 입장퇴장 그리고 ID 변경에 대한 Log를 기록하는 문제이다. 문제핵심 1. 닉네임은 변경가능하다. 중복도 허용한다. 2. 최종 출력은 변경된 닉네임으로 보여줘야 한다. 3. 입력은 다음과같다. 커맨드 유저아이디 닉네임 문제는 3단계로 나누어 풀수 있을 것같다. 1. 입력 받은값 Parsing 감사하게도 입력값은 space 로 나뉘어져 있다 간단하게 stringstream 으로 나누자 2. 유저 아이디에 따른 닉네임변경(닉네임은 중복허용) 키값으로 UserId를 정하고 닉네임을 value로 정할수 있겠다. map 을 사용하면 되겠다. 3. 최종 변경된 ID로 메세지 출력해주기 위에 저장 된 map을 양식에 맞게 출력해준다. 구현 .. 2021. 5. 23.
[Algorithm] Counting Sort Counting Sort? counting sort는 data의 수를 count 해서 정렬하는 방법이다. 특징 O(n+k): k 는 정렬할 숫자 중에 제일 큰값. 배열의 크기가 아닌 최대값의 영향을 받는다. 서로 비교를 하지 않고 숫자를 세어 정렬하는 방식. 최대값에 따라 영향을 받기 때문에 작은 범위에서 효율적이다. stable한 알고리즘이다. 입력에 동일한 값이 있을때 먼저 나오는 값이 출력에서도 먼저 나온다 분석 1. 데이터들의 숫자를 카운트한다. 2. 카운트 된 숫자를 출력한다. 구현 public class CountingSort { public static void main(String[] args) { int maxCount = 30; int[] arrayA = {2,5,3,0,2,3,0,3}.. 2021. 5. 21.
[프로그래머스] 방문 길이 문제 분석 그래프로 풀면 될것 같다. 인접행렬로 풀어 봤다. 그래프를 단순히 2차 배열로 만들었다 간선이 없으면 처음 가본길이므로 값을 증가한다. 간선이 있다면 이미 지나간 길이므로 값을 증가하지 않는다., 이렇게 보면 쉽지만... 구현한 코드가 좀 복잡 했다 아직 실력이 많이 부족한것 같다. 완전탐색 + 그래프 인접행렬 이렇게 풀면 될것 같다. 구현 #include #include using namespace std; int nodeVal[2000][2000]; int graphMap[2000][2000]; int substitution(int x, int y){ return nodeVal[x][y]; } int solution(string dirs) { int answer = 0; int cnt = .. 2021. 5. 15.
[프로그래머스] 다트게임 문제 예전에 풀었던 문제라서 코드가 지저분하다.. 분석 조건을 잘 보고 구현을 했다. 구현 #include #include #include #include using namespace std; int solution(string dartResult) { int answer; string a; a = dartResult; int aval[3] = { 0 }; memset(aval, 0, sizeof(aval)); int i = 0; int cnt = 0; int flag = 0; while (a.length() > i) { if (a.at(i) >= 'A' && a.at(i) = 0 && a.at(i+1) - '0' 2021. 5. 15.
728x90
반응형