디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

AoC 2024 Day 3 풀이

딱님갤로그로 이동합니다. 2024.12.04 11:57:47
조회 27 추천 0 댓글 3

use std::fs;

const MUL: &str = "mul(";

const DO: &str = "do()";

const DONT: &str = "don't()";

const TEST1: &str = "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))";

const TEST2: &str = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))";

fn part1(program: &str) -> usize {
    let mut i = 0usize;
    let mut res = 0usize;

    while i < program.len() {
        let suffix = &program[i..];
        let mut operand1 = 0usize;
        let mut operand2 = 0usize;

        if !suffix.starts_with(MUL) {
            i += 1;
            continue;
        }

        i += MUL.len();
        let suffix = &program[i..];

        // XXX: ugly
        if let Some(j) = suffix.find(',') {
            if let Ok(op1) = &suffix[..j].parse::<usize>() {
                operand1 = *op1;
                i += j + 1;
            } else {
                continue;
            }
        } else {
            continue;
        }

        let suffix = &program[i..];

        if let Some(j) = suffix.find(')') {
            if let Ok(op2) = &suffix[..j].parse::<usize>() {
                operand2 = *op2;
                i += j + 1;
            } else {
                continue;
            }
        } else {
            continue;
        }

        res += operand1 * operand2;
    }

    res
}

fn part2(program: &str) -> usize {
    let mut i = 0usize;
    let mut res = 0usize;

    let mut is_enabled = true;
    while i < program.len() {
        let suffix = &program[i..];
        let mut operand1 = 0usize;
        let mut operand2 = 0usize;

        if suffix.starts_with(DO) {
            is_enabled = true;
            i += DO.len();
            continue;
        } else if suffix.starts_with(DONT) {
            is_enabled = false;
            i += DONT.len();
            continue;
        }

        if !suffix.starts_with(MUL) {
            i += 1;
            continue;
        }

        i += MUL.len();
        let suffix = &program[i..];

        // XXX: ugly
        if let Some(j) = suffix.find(',') {
            if let Ok(op1) = &suffix[..j].parse::<usize>() {
                operand1 = *op1;
                i += j + 1;
            } else {
                continue;
            }
        } else {
            continue;
        }

        let suffix = &program[i..];

        if let Some(j) = suffix.find(')') {
            if let Ok(op2) = &suffix[..j].parse::<usize>() {
                operand2 = *op2;
                i += j + 1;
            } else {
                continue;
            }
        } else {
            continue;
        }

        if is_enabled {
            res += operand1 * operand2;
        }
    }

    res
}

fn main() {
    println!("{}", part1(TEST1));

    println!("{}", part2(TEST2));

    let program = fs::read_to_string("./inputs/day3.txt").unwrap();

    let sum: usize = program.lines().map(part1).sum();

    println!("{}", sum);

    let sum: usize = part2(&program);

    println!("{}", sum);
}


손수 파싱을 하시다


3시간 걸림

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 오픈 마인드로 이성을 만날 것 같은 스타는? 운영자 24/12/02 - -
2781132 3초안에 못맞추면 ADHD라는 문제 [9] 푸루린갤로그로 이동합니다. 12.04 58 0
2781131 [진중권 칼럼] 언어의 하이퍼인플레이션 발명도둑잡기갤로그로 이동합니다. 12.04 12 0
2781129 나는 똥싸는 기계인갑다 [2] ㅆㅇㅆ(124.216) 12.04 23 0
2781128 퇴사한지 3일차 마음이 가라앉는 중 [2] jonny갤로그로 이동합니다. 12.04 29 0
2781127 이거 ㅈ된거임? [2] 프갤러(222.113) 12.04 38 0
2781126 오세훈 "뉴스타파·뉴스토마토, 범죄사기 동조집단" 발명도둑잡기갤로그로 이동합니다. 12.04 10 0
2781125 금발모모링은 ㄹㅇ 갓여신 ♥냥덩이♥갤로그로 이동합니다. 12.04 18 0
2781123 형님들 오토핫키 이거 한번만 알려주세요 제발 부탁드립니다 [2] ㅇㅇ갤로그로 이동합니다. 12.04 19 0
2781120 법학 교수가 탄핵 요건은 갖췄다고 하네 ㅇㅅㅇ [16] 아스카영원히사랑해갤로그로 이동합니다. 12.04 59 0
2781119 윤퇴절이 온다 [3] 발명도둑잡기갤로그로 이동합니다. 12.04 14 0
2781118 한국에서 영어는 스펙용임 [3] 프갤러(203.229) 12.04 23 0
2781117 구라안치고 오늘 빌드300번 넘게한듯? 씨발 ㅇㅇ(223.38) 12.04 24 0
2781115 오늘의 소설, 영화 실마리: 윤석열 쿠데타 성공했다면 벌어질 일 발명도둑잡기갤로그로 이동합니다. 12.04 12 0
2781113 [육아삼쩜영] 어쩌다 아이들에게 '비상계엄'을 설명하게 되었을까 발명도둑잡기갤로그로 이동합니다. 12.04 8 0
2781111 이제 난방 안틀면 추워서 잠 안 오는듯 ♥냥덩이♥갤로그로 이동합니다. 12.04 24 0
2781110 노벨문학상 기자회견 이틀 앞둔 한강, 어떤 메시지 낼까 [지금뉴스] 발명도둑잡기갤로그로 이동합니다. 12.04 10 0
2781109 '출판 통제' 비상계엄에 "출판의 자유 압살 윤석열 규탄" 발명도둑잡기갤로그로 이동합니다. 12.04 7 0
2781107 <서울의 봄> 정우성 청룡영화제 [1] 발명도둑잡기갤로그로 이동합니다. 12.04 15 0
2781106 <서울의 봄> 황정민 청룡영화상 남우주연상 발명도둑잡기갤로그로 이동합니다. 12.04 9 0
2781105 개발자 영어 공부 좆도 쓸모 없는 듯 [2] 프갤러(211.235) 12.04 45 0
2781104 국군의 날 갑자기 시가행진 하며 친위 쿠데타 예행 연습? 발명도둑잡기갤로그로 이동합니다. 12.04 13 0
2781102 "국군의날 계엄 선포할 듯"…민주, 루머 비판에도 공세 강화 발명도둑잡기갤로그로 이동합니다. 12.04 12 0
2781101 빨리 추워졌으면 조케땅.. ♥냥덩이♥갤로그로 이동합니다. 12.04 13 0
2781100 계엄령은 불가능? 조선일보는 왜 틀렸나 [오마이팩트] 발명도둑잡기갤로그로 이동합니다. 12.04 10 0
2781099 자바쓸때 실무에서 hashmap 많이씀? [2] ㅇㅇ갤로그로 이동합니다. 12.04 36 0
2781098 주류언론 경제기사에 '오보·왜곡'이 많은 이유 발명도둑잡기갤로그로 이동합니다. 12.04 10 0
2781097 국가부도의날' 당시 한국언론의 태도는 발명도둑잡기갤로그로 이동합니다. 12.04 14 0
2781096 민주당이 예견한 계엄령, 음모론·망상으로 치부했던 언론 발명도둑잡기갤로그로 이동합니다. 12.04 11 0
2781095 YoLov8 관련 질문 올립니다 [1] 프갤러(1.230) 12.04 20 0
2781094 아시발정신나가겠네 ㅇㅇ 이거고치면 크롬에서안되고 [1] ㅇㅇ(211.211) 12.04 24 0
2781092 계엄 사태인데…접경지 김포 애기봉 레이저쇼 추진 논란 발명도둑잡기갤로그로 이동합니다. 12.04 11 0
2781091 이력서 쓸만한게 없네 진짜 현타온다.. [12] 프갤러(211.33) 12.04 65 0
2781090 미래의 어느 역사학자들의 대화라는데 (에필로그) 아갤러(211.210) 12.04 17 0
2781088 미래의 어느 역사학자들의 대화라는데 (요약편) 아갤러(211.210) 12.04 17 0
2781087 절대 죽지 않는 사나이.. ♥냥덩이♥갤로그로 이동합니다. 12.04 21 0
2781086 미래의 어느 역사학자들의 대화라는데 아갤러(211.210) 12.04 17 0
2781085 군경 동원한 불법적 국회 침탈…내란·반란죄 처벌 누구까지 발명도둑잡기갤로그로 이동합니다. 12.04 9 0
2781083 [영상] 민주당 “국회 진입 계엄군에 실탄 지급·저격수 배치 제보” 발명도둑잡기갤로그로 이동합니다. 12.04 12 0
2781082 장범준, 비상계엄 여파 속 예정대로 공연 진행 공지 발명도둑잡기갤로그로 이동합니다. 12.04 7 0
2781080 "할 말 많은 오늘" 이승환, 계엄 해제 후 소극장 콘서트 재개 발명도둑잡기갤로그로 이동합니다. 12.04 10 0
2781079 '강철부대W', 비상계엄 여파로 방송 중단…결승전 연기 발명도둑잡기갤로그로 이동합니다. 12.04 8 0
2781078 취업되서 햄보카다 ㅇㅇ(14.52) 12.04 27 0
2781077 MBC '줄 결방'→KBS 2TV '정상 방송'…'비상계엄' 발명도둑잡기갤로그로 이동합니다. 12.04 12 0
2781076 김수현·정은채 등 연예인 참석 행사 줄줄이 취소...비상계엄 여파 발명도둑잡기갤로그로 이동합니다. 12.04 7 0
2781074 Aws 서버도 https 인증 받아야함?? [6] ㅇㅇ갤로그로 이동합니다. 12.04 44 0
2781073 北매체, 기무사 '촛불계엄' 문건에 "치떨리는 범죄흉계" 발명도둑잡기갤로그로 이동합니다. 12.04 8 0
2781072 "BTS 전역 미뤄지나"…계엄령 선포에 아이돌 팬덤도 '긴장' 발명도둑잡기갤로그로 이동합니다. 12.04 8 0
2781071 뀨❤+ ♥냥덩이♥갤로그로 이동합니다. 12.04 13 0
2781070 경력기술서는 포장이네 [1] ㅇㅇ(211.234) 12.04 30 0
2781067 나도 시발 여권하나 들고 여행가보고 싶다 ㅇㅅㅇ [1] ㅇㅇ(123.213) 12.04 16 0
뉴스 김수용, 尹 비상계엄 선포 겨냥…“독방은 추울텐데” 디시트렌드 12.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2