자료구조 & 알고리즘 스터디

Overview

Algorithm & Data Structure

  • 브랜치명은 자신의 이름으로 한다 (ex. Changhun-Han)
  • 자신의 브랜치에만 커밋한다
  • 1문제당 1커밋을 원칙으로 한다
  • 커밋 메시지는 간결하고 명확하게 작성한다
feat(<branch>): [<플랫폼>, <문제번호>] <문제이름>

<문제 링크>

Example Commit Message

feat(changhun): [BOJ, 2557] Hello World

https://www.acmicpc.net/problem/2557
Comments
  • Weekly Pull Request - 김수정

    Weekly Pull Request - 김수정

    opened by hailey21 7
  • Weekly Pull Request - 김성은

    Weekly Pull Request - 김성은

    opened by seongit 4
  • [Help][BOJ, 8958] OX퀴즈

    [Help][BOJ, 8958] OX퀴즈

    문제

    https://www.acmicpc.net/problem/8958 ​

    작성한 코드

    import java.io.*;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int tCase = Integer.parseInt(br.readLine());
            String ox[] = new String[tCase];
    
            for(int i=0; i < tCase; i++){
                ox[i] = br.readLine();
            }
            br.close();
    
            for(int i=0; i<ox.length; i++) {
                int cnt = 0;
                int sum = 0;
                for(int j=0; j<ox[i].length(); j++){
                    if(ox[i].charAt(j) == 'O'){
                        cnt++;
                    } else {
                        cnt = 0;
                    }
                    sum += cnt;
                }
                System.out.print(sum + "\n");
            }
        }
    }
    

    코드 설명

    "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

    • 문자열을 배열로 넣어서 O 가 있으면 카운트 변수의 값을 증가
    • 반복문을 돌다가 X 가 있다면 카운트 변수의 값을 0으로 초기화
    • 카운트 변수를 총 합 변수 sum 안에 넣은 코드입니다.

    ❌ 코드의 문제는 아닙니다! ❌ 특정 문자열을 기준으로 배열안 문자열을 분리하려면 indexof, substring, split 등의 방법을 사용하는데, 이 문제는 특정 기준 없이 문자열을 하나씩 쪼개는 방법이 필요한데, 떠오르지 않아 참고를 하였습니다.. 다른 방법이 있을까요??

    Help JAVA 
    opened by soheeoott 4
  • [BOJ, 18883] N M 찍기

    [BOJ, 18883] N M 찍기

    문제

    https://www.acmicpc.net/problem/18883

    작성한 코드

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
            int num = 1;
    
            for(int i=0; i <= n; i++){
                for(int j=0; j <= m; j++){
                    if (num % m == 0) {
                        System.out.printf(num + "");
                        num+=1;
                        System.out.println("");
                    }
                    if(num <= n*m) {
                        System.out.printf(num + "");
                        num++;
                    }
                }
            }
            sc.close();
        }
    }
    

    코드 설명

    안녕하세요! 코드는 문제가 없으나 시간 초과가 나더라구요.......

    1~12의 값을

    1, 2, 3, 4
    5, 6, 7, 8
    9, 10, 11, 12 
    

    의 형태로 출력하는 문제입니다.

    행의 역할을 하는 n 의 값과 열의 역할을 하는 m 의 값을 입력으로 받아오고 1~12를 출력하기 위해 num 변수를 사용했습니다.

    반복문으로 입력받아온 행, 열의 값까지 순환하도록 i 와 j 의 값을 설정해주었고, 열을 출력하는 반복문 j 안에

    1. 첫 번째 조건문 조건문으로 숫자(num)의 값이 4 로 나누었을 때 나머지가 0 일 경우에 4를 출력(printf)한 후 숫자가 5가 되면 개행이 되도록 작성하였고,

    2. 두 번째 조건문 숫자(num) 의 값이 n*m 한 값 (=12) 까지 출력해야 하므로 조건문을 설정해주었습니다.

    시간 초과의 문제가 무엇인지 모르겠어서 조금 더 코드를 줄이려고 첫 번째 조건문에서 4를 출력후 숫자의 값을 1을 더하는 코드에서 System.out.printf(num + ""); 부분의 코드를 뺐더니 4의 값이 사라집니다...ㅠㅠ

    도움을 주신다면 너무 감사할 것 같습니다...ㅠ

    Help JAVA 
    opened by soheeoott 4
  • Weekly Pull Request - 정한결

    Weekly Pull Request - 정한결

    opened by HangryDev 4
  • Weekly Pull Request - 안소희

    Weekly Pull Request - 안소희

    opened by soheeoott 3
  • Weekly Pull Request - Soojung kim

    Weekly Pull Request - Soojung kim

    opened by hailey21 3
  • [Help] [BOJ, 4949] 균형잡힌 세상

    [Help] [BOJ, 4949] 균형잡힌 세상

    문제

    https://www.acmicpc.net/problem/4949 ​

    작성한 코드

    import sys
    
    input = sys.stdin.readline
    
    while True:
        sentence = input().rstrip()
        stack = []
        # flag가 여전히 True이면 균형 조건에 만족한것
        # False로 바뀌면 조건 실패함
        flag = True
        # .이 탈출조건
        if sentence == '.':
            break
    
        for i in sentence:
            # 만약 ( 나 [ 라면 스택에 추가해라
            if i == '(' or i == '[':
                stack.append(i)
            elif i == ')':
                # 만약 stack이 비어있고, 최근에 스택에 들어온 값이 '['이라면
                if not stack or stack[-1] == '[':
                    # flag의 값을 False로 하고
                    flag = False
                    # 빠져나와라
                    break
                # 만약 stack에 최근에 넣은 값이 '('이라면 짝을 이루므로
                elif stack[-1] == '(':
                    # 최근의 (을 꺼내서 없애라
                    stack.pop()
            # 만약 ]라면
            elif i == ']':
                # 스택에 쌓인 값이 없거나 스택에 최근 넣은 값이 ( 라면
                if not stack or stack[-1] == '(':
                    flag = False
                    # 나와라
                    break
                # 스택에 최근 넣은 값이 [이라면
                elif stack[-1] == '[':
                    # 꺼내서 없애라
                    stack.pop()
        # 만약 flag의 값이 여전히 True이고 스택이 비어있다면
        if flag == True and not stack:
            # YES를 출력해라
            print('YES')
        # 그렇지 않다면
        else:
            # NO를 출력해라
            print('NO')
    
    

    코드 설명

    문제에 주어진 예제 케이스는 다 통과하는데 틀렸다고 계속 뜹니다 반례가 뭘까요. 코드 설명은 주석에 써놓았습니다.

    Help Python 
    opened by takoyummy 3
  • Weekly Pull Request - 김성은

    Weekly Pull Request - 김성은

    opened by seongit 2
  • Weekly Pull Request - 조정무

    Weekly Pull Request - 조정무

    opened by whwjdan 2
  • Weekly Pull Request - 안소희

    Weekly Pull Request - 안소희

    opened by soheeoott 2
Releases(4.9)
Owner
Changhun-Han
👨‍💼Working as a server developer. started programming a bit late in my life. but, I'll put in the effort and I will learn what I need to learn
Changhun-Han
🧐 동룡쭌의 알고리즘 클럽 🧐

?? 동룡쭌의 알고리즘 클럽 ?? ?? Schedule 일시 주제 동 룡 쭌 22/02/07 그리디 ✈️ ✈️ ✈️ 22/02/09 구현 ✈️ ✈️ ️ ✈️ 22/02/11 DFS/BFS ✈️ ✈️ 22/02/14 정렬 ✈️ ✈️ ✈️ 22/02/16 이진 탐색 ✈️

null 5 Mar 9, 2022